Oppure

Loading
25/05/21 10:39
bernie
Buon Giorno
Ho due file bmp che dovrei "incollare " uno dentro l'altro . Non devo visualizzarlo a video , solo creare il file risultante dai due .
Supponiamo che ho un file bmp di dimensione 1000X1000 pixel . All'interno di questo file , dovrei incollare il contenuto di un secondo file bmp di dimensione 500X500Pixel .
Qualche suggerimento ?
Grazie
aaa
25/05/21 18:58
Poggi Marco
Ciao.

Cosa intendi per " incollare " i file bmp ?

Devi sovrapporre i pixel, affiancare le figure o altro ?
aaa
26/05/21 11:18
Carlo
hai scritto nulla?
devi caricare i due file bmp in due bitmap temporanee, trasformare la bmp più grande in layer grafico, in modo che ci puoi disegnare o scrivere sopra, tu hai bisogno di disegnarci un'immagine allora userai drawimage:

Dim bmp1 As New Bitmap("miabmp1.bmp") ' bmp1 prende le dimensioni del file caricato
Dim bmp2 As New Bitmap("miabmp2.bmp") ' bmp2 prende le dimensioni del file caricato
Dim g As Graphics = Graphics.FromImage(bmp1) ' la bmp1 come layer grafico
g.DrawImage(bmp2, 0, 0, bmp2.Width, bmp2.Height) ' in bmp1 disegno la bmp2 alle coordinate 0,0 (in alto a sinistra) con le sue dimensioni (bmp2.Width, bmp2.Height)
bmp1.Save("miabmp3.bmp") ' salvo il risultato


nei nomi dei files, non ho messo nessun percorso, significa che le bitmap devono risiedere nella cartella dell'eseguibile...
Aggiungi il tuo percorso e i nomi giusti dei files
Ultima modifica effettuata da Carlo 26/05/21 18:15
in programmazione tutto è permesso
26/05/21 15:17
bernie
Ciao Carlo
Grazie per il suggerimento , questa sera provo .
Ciao Marco
Praticamente ho un file bmp sul quale devo "incollare" i pixel di un secondo file e salvare il file risultante.

aaa
27/05/21 8:37
bernie
Ciao Carlo
Purtroppo il tuo consiglio con i file che uso non funziona
"System.Exception: 'Impossibile creare un oggetto Graphics da un'immagine con formato a pixel indicizzati.'"

Io devo usare dei file 1bpp.

Grazie


aaa
30/05/21 18:33
Carlo
Mi zippi due dei file che devi usare e me li alleghi?
Il risultato deve essere salvato nello stesso formato dei files in ingresso?
Che linguaggio usi?
Ultima modifica effettuata da Carlo 30/05/21 18:36
in programmazione tutto è permesso
05/06/21 17:30
bernie
Ciao Carlo
ti allego uno dei file che uso , il secondo file in pratica è un file di dimensioni maggiori di questo , ma con le stesse caratteristiche,però è completamente bianco.
Uso VB.NET visual studio 2019
Grazie
aaa
06/06/21 17:13
Carlo
Ci sono più strade, la prima convertire le bmp a 1bpp, in un formato minimo senza pixel indicizzati, come il 16bpp
Dim bmp1_1 As New Bitmap("bianco1.bmp") ' bmp1_1 prende il formato del file caricato
Dim bmp2_1 As New Bitmap("testclone.bmp") ' bmp2_1 prende il formato del file caricato

Dim area = New Rectangle(0, 0, bmp1_1.Width, bmp1_1.Height) ' converto a 16bpp
Dim bmp1_16 As Bitmap = bmp1_1.Clone(area, Drawing.Imaging.PixelFormat.Format16bppRgb555)

area = New Rectangle(0, 0, bmp2_1.Width, bmp2_1.Height) ' converto a 16bpp
Dim bmp2_16 As Bitmap = bmp2_1.Clone(area, Drawing.Imaging.PixelFormat.Format16bppRgb555)

' ora posso eseguire la fusione
Dim g As Graphics = Graphics.FromImage(bmp1_16) ' la bmp1_16 come layer grafico
g.DrawImage(bmp2_16, 0, 0, bmp2_16.Width, bmp2_16.Height) ' in bmp1_16 disegno la bmp2_16 alle coordinate 0,0 (in alto a sinistra) con le sue dimensioni (bmp2_16.Width, bmp2_16.Height)
bmp1_16.Save("miabmp3.bmp", Drawing.Imaging.ImageFormat.Bmp) ' salvo il risultato a 16bpp

' per salvare a 1bpp prima l'immagine va riconvertita
area = New Rectangle(0, 0, bmp1_16.Width, bmp1_16.Height)
Dim bmpout_1 As Bitmap = bmp1_16.Clone(area, Drawing.Imaging.PixelFormat.Format1bppIndexed)
bmpout_1.Save("miabmp4.bmp", Drawing.Imaging.ImageFormat.Bmp) ' salvo il risultato a 1bpp


la seconda strada è invece trattare l'immagine come un array:
1) caricare l'immagine 1
2) con due cicli for copiare tutti i pixel, composti da soli 1 e 0 l'mmagine 1 (più grande) in un array
3) caricare l'immagine 2
4) con due cicli for copiare tutti i pixel, composti da soli 1 e 0 dell'mmagine 2 nelle posizioni desiderate nell'array
5) salvare l'array risultante come bmp 1bpp

E altre strade, vedi LockBits....

Ultima modifica effettuata da Carlo 06/06/21 20:00
in programmazione tutto è permesso