在Windows(.Net)上转换JPEG颜色空间(Adobe RGB到sRGB)

时间:2009-07-23 22:26:36

标签: .net asp.net rgb color-space

我需要从大型照片生成缩略图和中等大小的图像。 这些较小的照片可在在线图库中显示。许多摄影师使用Adobe RGB提交JPEG图像。 我想将sRGB用于所有缩略图和中等大小的图像

我正在使用dotnet(asp.net),需要一种方法将Adobe RGB转换为sRGB而不会失去任何质量。

5 个答案:

答案 0 :(得分:5)

背景信息:Jpg文件有8位红色,绿色和蓝色,无论是sRGB,Adobe RGB还是纯色RGB。 ICC描述符确定颜色空间。有时它嵌入在jpg文件中。有时会有一个标志来指定sRGB,Exif Colorspace标签a001 = 1.Adobe RGB没有标准标志,但有些应用程序和摄像头在exif标签A001中使用65535(未校准)用于Adobe RGB。

要将jpg文件从一个ICC配置文件(颜色空间)转换为另一个,可以使用CreateColorTransform在颜色空间之间创建转换。您需要提供源(Adobe RGB)和目标(sRGB)颜色空间的ICC配置文件。

完成变换后,使用TranslateBitmapBits调整像素。使用图像作为DIBSection可能更容易。

在.asp中编写这可能有点复杂,因此使用图形库可能更容易。

答案 1 :(得分:4)

答案 2 :(得分:2)

您应该使用ImageMagic -profile选项,我相信-colorspace选项对您没有帮助。

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

或者,您可以查找little color management engine

答案 3 :(得分:1)

查看The bitmap transform classes,其中包含使用带有配置文件的ColorconvertedBitmap类的简短示例。

答案 4 :(得分:0)

在服务器端,您可以调用ImageMagick并让它为您进行转换。

Here's a link to the -colorspace command line option

我没有使用过这个特殊的选项,但似乎做了你想做的事。