【问题标题】:System.Drawing.Image and colour spacesSystem.Drawing.Image 和色彩空间
【发布时间】:2012-09-27 23:57:57
【问题描述】:

如果我使用System.Drawing.Bitmap 创建位图,如何指定位图使用的颜色空间?另外,当我将图像保存为 jpeg 或 tiff 时,如何确保嵌入颜色配置文件?

【问题讨论】:

    标签: .net image-processing


    【解决方案1】:

    我想我已经找到了答案。

    色彩空间记录在图片的PropertyItems

    它的 ID 为 40961,即它的 EXIF ID。

    所以我假设将这个属性的一个实例添加到新创建的位图中会给图像一个色彩空间。

    但是有一个大问题。 System.Drawing.Imaging.PropertyItem 类没有公共构造函数。所以不可能创建一个新的PropertyItem。它在documentation 中说,PropertyItems 仅用于访问现有图像元数据而不是创建元数据。那么如果我想创建一个全新的图像并为其分配一个带有PropertyItem 的色彩空间呢?

    它还在文档中说,如果我想创建一个新的PropertyItem,我应该得到一个现有的PropertyItem,克隆它,编辑克隆,然后将克隆添加到PropertyItems。但是,如果我正在创建一个新图像,则不会有任何现有的PropertyItems。那么我应该如何添加一个声明颜色空间的PropertyItem

    【讨论】:

    • 两个选项——如果您想分配某些预定义的色彩空间值,您可以只包含一个或多个“模板”1x1 像素 JPEG 文件来加载它们并找到它们的 PropertyItem 对象。如果您需要在开发时动态设置您不知道的颜色空间,您可能需要查看 JPEG 文件的内部结构,然后包含一个模板,您可以在其中覆盖特定的字节偏移量以设置任意颜色空间价值。这样,您就可以按需生成所需的任何 PropertyItem 值。
    猜你喜欢
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多