2009-07-23 9 views
5

Ho bisogno di generare immagini in miniatura e di medie dimensioni da foto di grandi dimensioni. Queste foto più piccole sono esposte in una galleria online. Molti fotografi stanno inviando immagini JPEG usando Adobe RGB. Mi piacerebbe usare sRGB per tutte le miniature e le immagini di dimensioni medieConversione di uno spazio colore JPEG (Adobe RGB su sRGB) su Windows (.Net)

Sto usando dotnet (asp.net) e ho bisogno di un modo per convertire da Adobe RGB a sRGB senza perdere qualità.

risposta

4

Informazioni di base: i file Jpg hanno 8 bit di rosso, verde e blu, sia sRGB, Adobe RGB o normale ol 'RGB. Il descrittore ICC determina lo spazio cromatico. A volte questo è incorporato nel file jpg. A volte c'è un flag per designare sRGB, tag Exif Colorspace a001 = 1. Non c'è alcun flag standard per Adobe RGB, ma alcune applicazioni e fotocamere usano 65535 (non calibrato) per Adobe RGB nel tag exif A001.

Per convertire un file jpg da un profilo ICC (spazio colore) a un altro, è possibile utilizzare CreateColorTransform per creare un transorm tra gli spazi colore. Sarà necessario fornire il profilo ICC per gli spazi colore di origine (Adobe RGB) e di destinazione (sRGB).

Dopo aver trasformato, utilizzare TranslateBitmapBits per regolare i pixel. Potrebbe essere più semplice lavorare con l'immagine come DIBSection.

Questo potrebbe essere un po 'complesso da scrivere in .asp, quindi potrebbe essere più semplice usare una libreria di grafica che faccia questo.

4

Date un'occhiata a ColorConvertedBitmap class.

+0

Link sembra funzionare ora. –

+0

@Jon Grazie, ho aggiornato la risposta. –

1

Dai un'occhiata a The bitmap transform classes che contiene un breve esempio di utilizzo della classe ColorconvertedBitmap con un profilo.

Problemi correlati