2009-07-23 24 views
5

Büyük fotoğraflardan küçük resim ve orta boyutlu görüntüler oluşturmam gerekiyor. Bu daha küçük fotoğraflar çevrimiçi galeride gösterilmek içindir. Fotoğrafçıların çoğu Adobe RGB kullanarak JPEG görüntüleri gönderiyor. Tüm küçük resimler ve orta boy resimler için sRGB kullanmak istiyorumJPEG renk uzayını (Adobe RGB - sRGB) Windows'ta dönüştürme (.Net)

Dotnet (asp.net) kullanıyorum ve herhangi bir kalite kaybı olmadan Adobe RGB'den sRGB'ye dönüştürmenin bir yoluna ihtiyacım var.

cevap

4

Arka plan bilgisi: Jpg dosyaları, sRGB, Adobe RGB veya düz ol 'RGB olmak üzere 8 bit kırmızı, yeşil ve maviye sahiptir. ICC açıklayıcısı, renk uzayını belirler. Bazen bu jpg dosyasına gömülür. Bazen sRGB, Exif Colorspace etiketi a001 = 1 olarak adlandırılan bir bayrak vardır. Adobe RGB için standart bir bayrak yoktur, ancak bazı uygulamalar ve kameralar, Adobe RGB için A001 etiketinde 65535 (kalibre edilmemiş) kullanır.

Bir jpg dosyasını bir ICC profilinden (colorspace) diğerine dönüştürmek için, renk uzayları arasında bir transorm oluşturmak için CreateColorTransform öğesini kullanabilirsiniz. Kaynak (Adobe RGB) ve hedef (sRGB) renk alanları için ICC profili sağlamanız gerekecektir.

Dönüşümden sonra, pikselleri ayarlamak için TranslateBitmapBits kullanın. Görüntü ile bir DIBSection olarak çalışmak daha kolay olabilir.

Bu, .asp ile yazmak için biraz karmaşık olabilir, bu nedenle bunu yapan bir grafik kitaplığını kullanmak daha kolay olabilir.

4

ColorConvertedBitmap class bir göz atın için

convert image.jpg -profile sRGB.icc rgb_image.jpg 

Alternatif bakabilirsiniz.

+0

Bağlantı şimdi çalışmıyor görünüyor. –

+0

@Jon Teşekkürler, cevabı güncelledim. –