System.Drawing.Image和色彩空间

3

如果我使用System.Drawing.Bitmap创建位图,如何指定位图所使用的颜色空间?同时,在将图像保存为JPEG或TIFF时,如何确保嵌入颜色配置文件?

1个回答

1

我认为我已经找到了答案。

颜色空间记录在图像的PropertyItems中。

它的ID是40961,这是它的EXIF ID。

因此,我会假设将此属性的实例添加到新创建的位图中将为图像提供颜色空间。

然而,有一个大问题。System.Drawing.Imaging.PropertyItem类没有公共构造函数。因此,无法创建新的PropertyItem。在文档中指出,PropertyItems仅用于访问现有图像元数据,而不是创建元数据。那么,如果我想创建全新的图像并使用PropertyItem分配颜色空间,该怎么办?

文档还提到,如果我想创建一个新的PropertyItem,应该获取一个现有的PropertyItem,克隆它,编辑克隆版本,并将克隆版本添加到PropertyItems中。但是,如果我正在创建一个新图像,那么就不会有任何现有的PropertyItems。那么我该如何添加声明颜色空间的PropertyItem呢?

有两种选择——如果您想分配特定的预定义色彩空间值,您可以只需包含一个或多个“模板”1x1像素JPEG文件,以便加载它们并找到它们的PropertyItem对象。如果您需要在开发时动态设置您不知道的颜色空间,您可能需要查看JPEG文件的内部结构,然后包含一个模板,在其中您知道可以覆盖特定字节偏移量以设置任意色彩空间值。有了这个,您可以按需生成所需的任何PropertyItem值。 - Jonathan Gilbert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接