Oppure

Loading
18/09/21 16:21
bernie
Quella immagine dovrebbe essere greyscale, almeno, l'originale è greyscale.

Credo che non ci sia soluzione, mi serve come out un bmp 8bpp greyscale.

Infatti tutti gli esempi che ho trovato in rete, non convertono in greyscale, ma rendono una immagine RGB grigia, e non sono neanche convinto che la conversione con i tre canali uguali sia corretta, visto che l'occhio umano ha sensibilità diversa in base al canale ( è molto più sensibile al verde che al blu)

Se .Net non supporta greyscale, quale linguaggio lo supporta?
Grazie
aaa
18/09/21 22:15
Carlo
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:
en.wikipedia.org/wiki/…

Ultima modifica effettuata da Carlo 19/09/21 8:52
in programmazione tutto è permesso
19/09/21 7:08
bernie
Perché l'ho creato in Photoshop come greyscale e salvato greyscale 8 bpp
Ultima modifica effettuata da bernie 19/09/21 7:10
aaa
19/09/21 8:40
Carlo
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:

 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 19/09/21 9:45
in programmazione tutto è permesso
19/09/21 12:19
bernie
C'è qualcosa di strano, in effetti quando lo riapro mi dice scala di colore.
Ma non ha senso.
aaa
19/09/21 12:53
Carlo
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 19/09/21 13:01
in programmazione tutto è permesso
19/09/21 13:14
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.
aaa
19/09/21 14:13
Carlo
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 19/09/21 14:16
in programmazione tutto è permesso