Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - modificare file BMP
Forum - C# / VB.NET - modificare file BMP - Pagina 2

Pagine: [ 1 2 3 4 5 ] Precedente | Prossimo
Avatar
Carlo (Member)
Guru


Messaggi: 1284
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 0:15
Domenica, 19/09/2021
Come lo stabilisci che è grayscale?

Un'immagine grayscale, dovrebbe essere senza palette e a 16 bit. Non so quale linguaggio supporti grayscale.

Le conversioni in bianco e nero che prendono un canale RGB, sono scorciatoie che a volte possono andare bene altre no.
Per fare una conversione da RGB a BiancoNero si usa Color matrix, ma sempre che si resta nel mondo a 24bit.

In VB.Net quello che vuoi fare tu si può fare studiando come deve essere scritto l'headher di un file BMP:
https://en.wikipedia.org/wiki/BMP_file_format


Ultima modifica effettuata da Carlo il 19/09/2021 alle 10:52


in programmazione tutto è permesso
PM Quote
Avatar
bernie (Normal User)
Pro


Messaggi: 164
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 9:08
Domenica, 19/09/2021
Perché l'ho creato in Photoshop come greyscale e salvato greyscale 8 bpp

Ultima modifica effettuata da bernie il 19/09/2021 alle 9:10
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1284
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 10:40
Domenica, 19/09/2021
Testo quotato

Postato originariamente da bernie:

Perché l'ho creato in Photoshop come greyscale e salvato greyscale 8 bpp



Se provi a ricaricarlo, ti dice scala di grigio o scala di colore?

Nel mio "vecchio" Photoshop 7, il file cerchio8bpp.bmp che hai allegato e il file stirato, risultano entrambi scala di colore

In VB .Net, con l'istruzione di sola lettura:

Codice sorgente - presumibilmente C# / VB.NET

  1. Dim Tipo As Integer = nomebmp.Palette.Flags



Si può sapere il tipo dell'immagine. Entrambe le immagini in questione restituiscono 2 (I colori nella matrice sono valori della scala di grigi)

Se nel mio codice metti i valori dello zoom entrambi a 1, il file risultante ha la stessa dimensione in byte -2 del file in ingresso, se li confronti con un ExEditor, ci sono delle differenze nell'header sull'alpha della ColorPalette: 0x00 per Photoshop 0xFF per .Net, qualche altra piccola differenza sui nomi dell'encoder e marchi, la differenza di 2 bytes è data dal fatto che in cerchio8bpp.bmp ci sono tre terminatori di valore 0x00 mentre nel file stirato ce n'è uno, ma nessuna differenza nei dati che compongono l'immagine.
Anche se non ne sono certo al 100%, ritengo che entrambi i files siano dello stesso tipo. :rofl:

Se per qualche ragione ignota il tuo sistema non dovesse riconoscere il file stirato, sarebbe sufficiente scrivere il file direttamente con BinaryWriter: prima l'header sempre uguale, poi i dati con tre terminatori, bisogna ancora calcolare la lunghezza del file ed inserirla in LittleEndian nei byte 2, 3, 4 e 5 del file BMP risultante.
Credo che tale sistema velocizzerebbe anche l'esecuzione totale, bisogna provare.

Ultima modifica effettuata da Carlo il 19/09/2021 alle 11:45


in programmazione tutto è permesso
PM Quote
Avatar
bernie (Normal User)
Pro


Messaggi: 164
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 14:19
Domenica, 19/09/2021
C'è qualcosa di strano, in effetti quando lo riapro mi dice scala di colore.
Ma non ha senso.

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1284
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 14:53
Domenica, 19/09/2021
Testo quotato

Postato originariamente da bernie:

C'è qualcosa di strano, in effetti quando lo riapro mi dice scala di colore.
Ma non ha senso.  



Ha senso perché salvi in BMP dove grayscale, non esiste.

Se salvi in TIFF o PSD, vedrai che la scala di grigio viene mantenuta.

Non pensare in VB.Net, di caricare la Tiff grayscale, elaborarla e poi salvarla in Tiff grayscale, perché sarà colorscale anche se la palette ha solo livelli di grigio, anzi in grayscale la palette non dovrebbe esistere.

Ultima modifica effettuata da Carlo il 19/09/2021 alle 15:01


in programmazione tutto è permesso
PM Quote
Avatar
bernie (Normal User)
Pro


Messaggi: 164
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 15:14
Domenica, 19/09/2021
Il mio sistema  riconosce solo bmp monocolore 8 bit, 2 bit e 4 bit.
Carica I colorscale però  non li stampa.
Mentre i TIFF non lo carica neanche.

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1284
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 16:13
Domenica, 19/09/2021
Testo quotato

Postato originariamente da bernie:

Il mio sistema  riconosce solo bmp monocolore 8 bit, 2 bit e 4 bit.
Carica I colorscale però  non li stampa.
Mentre i TIFF non lo carica neanche.


Si può avere un file che il tuo sistema carica e stampa?
A quanti bit vuoi lavorare? Se li vuoi usare tutti e tre, posta tre file che il tuo sistema carica e stampa a 8 bit, 2 bit e 4 bit.

Ultima modifica effettuata da Carlo il 19/09/2021 alle 16:16


in programmazione tutto è permesso
PM Quote
Avatar
bernie (Normal User)
Pro


Messaggi: 164
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 18:44
Domenica, 19/09/2021
Premetto che fino ad ora io avevo sempre creato le grafiche in photoshop , salvandole bmp 8bpp greyscale .
Effettivamente,quando le riapro con photoshop,mi vengono indicate come scala di colore.
Però il mio sistema le riconosce e le stampa.
Le grafiche che creo in .NET,non me le stampa.
Se le apro sono entrambe colorscale  e non greyscale,ma quasi sicuramente come dice Carlo,la differenza dovrebbe essere nell'header del bmp.
In allegato 3 grafiche,una creata con photoshop e salvata come greyscale (41X41mm_greyscale) il sistema la stampa  
La seconda è una grafica di servizio del sistema ( banding2) ovviamente il sistema la stampa
La terza (prova)  l'ho creata in .NET,il sistema non la stampa.
Tutte le grafiche sono a 8bpp, lasciamo perdere il resto per il momento.

Quindi , la soluzione potrebbe essere modificare l'header del file?
Grazie


bernie ha allegato un file: grafiche_esempio.zip (0 bytes)
Clicca qui per scaricare il file
PM Quote
Pagine: [ 1 2 3 4 5 ] Precedente | Prossimo