Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    [VB.NET] - Ridimensionare immagine

    Ciao a tutti mi servirebbe una mano per una cosetta :P

    Io di solito ridimensiono le immagini usando l'oggetto Bitmap e va tutto bene il punto è che questa volta mi serve mantenere una dimensione fissa per le immagini quindi quando ridimensiono mi servirebbe che l'eventuale scarto di sfondo rimanga bianco!

    Mi spiego meglio...

    Supponiamo che io abbia un'immagine 1000X800 pixel e che il mio output deve essere 1000x1000 a me serve ottenere un'immagine 1000x1000 ma non "distorta" quindi vorrei (in questo caso) avere la mia ma con 200 pixel in + (che saranno sfondo bianco)

    Spero di essere riuscita a spiegarmi xD

  2. #2
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    Sai copiare una bitmap su un'altra?

  3. #3
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    no

  4. #4
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    ahi ahi ... l'idea era quella di caricare una picturebox1 con la tua immagine e di avere una seconda picturebox2 che ogni volta che è ridimensionata crea una nuova bitmap con quelle dimensioni. Se tu "sovrascrivi" ogni nuova bitmap in picturebox2 con quella della picturebox1 usando una grafica Raster con GetPixel e SetPixel ottieni una picturebox2 che potrebbe anche andare bene solo che il "resto" di picturebox2 è fatto di pixel "neri" e non bianchi come li vuoi tu. Allora prima di ricopiare l'immagine di picturebox1 in picturebox2 dovresti trasformare tutti i pixel di picturebox2 da neri a bianchi, con SetPixel. La grafica raster procede ad una velocità talmente elevata che non avresti alcun tempo di attesa e non ti accorgeresti nemmeno di tutte queste operazioni. Ma non è un discorso semplice da fare per chi non ha dimestichezza con la grafica raster. Probabilmente ci sono altri metodi migliori ma al momento non mi quadrano...

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    con un po' di pazienza, usando il metodo DrawImage dell'oggetto Graphics, credo che si possa fare.

    Prova a cercare con google (io ho provato con: c# fit image to another e mi pare che la soluzione ci sia)
    Pietro

  6. #6
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Esempio:
    codice:
            Dim immagine As New Bitmap(1000, 800)
            Dim gr As Graphics = Graphics.FromImage(immagine)
            gr.Clear(Color.Red)
    
            Dim sfondo As New Bitmap(1000, 1000)
            Dim gr1 As Graphics = Graphics.FromImage(sfondo)
            gr1.Clear(Color.Green)
    
            Dim x As Integer = (sfondo.Width - immagine.Width) / 2
            Dim y As Integer = (sfondo.Height - immagine.Height) / 2
            gr1.DrawImage(immagine, x, y)
    
            PictureBox1.Image = sfondo

  7. #7
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Uh grazie! Dopo lo provo e vi faccio sapere se ho trionfato

  8. #8
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Scusate ragazzi non sono ancora riuscita a venirne a capo!
    Non mi intendo molto di questi metodi :°

    Da dove dovrei caricare la mia immagine già esistente? :/

  9. #9
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    codice:
        Private Sub dimensionaImg(ByVal dimensione As Integer)
            Dim fl As New IO.DirectoryInfo("C:\Users\Vero\Desktop\ProvaImg\")
    
            For Each f As IO.FileInfo In fl.GetFiles
                Dim immagine As New Bitmap(f.FullName)
                Dim gr As Graphics = Graphics.FromImage(immagine)
    
                Dim sfondo As New Bitmap(dimensione, dimensione)
                Dim gr1 As Graphics = Graphics.FromImage(sfondo)
                gr1.Clear(Color.Green)
    
                Dim x As Integer = (sfondo.Width - immagine.Width) / 2
                Dim y As Integer = (sfondo.Height - immagine.Height) / 2
                gr1.DrawImage(immagine, x, y)
    
                PictureBox1.Image = sfondo
            Next
    
        End Sub
    Ho riadattato così il codice ma non va... :/ cioè nella picture mi fa vedere l'immagine croppata non la ridimensiona lasciando lo sfondo per lo "scarto" :/ ora provo a ragionarci ancora :P

  10. #10
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    La proprietà SizeMode della Picturebox io l' avevo impostata su Zoom in modo da farla rientrare nella pictur senza deformazioni...avevo scritto il codice da un' altra parte...:
    codice:
    PictureBox1.SizeMode = PictureBoxSizeMode.Zoom
    vedi se così va meglio.
    Il ciclo a cosa ti serve?
    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.