【问题标题】:Not able to change channel depth of EXR file using ImageMagick with openEXR无法使用带有 openEXR 的 ImageMagick 更改 EXR 文件的通道深度
【发布时间】:2019-06-21 08:03:49
【问题描述】:

我想将 16 位 (HALF) exr 图像转换为 32 位 exr 图像。我正在尝试使用使用 openEXR 构建的 ImageMagick 来实现,但我无法做到这一点。

我已经构建 ImageMagick-7.0.8-23-Q8-windows-x64-static 并启用了 HDRI 标志。我正在使用 16 位 RGBA EXR 文件。当我运行以下命令时:

identify -verbose "Desk.exr"

它将通道深度设为 8 位。

格式:EXR(高动态范围 (HDR))
类:DirectClass
几何:644x874+0+0
单位:未定义
色彩空间:RGB
类型:TrueColorAlpha
基本类型:未定义
字节序:未定义
深度:8 位
渠道深度:
红色:8 位
绿色:8 位
蓝色:8 位
Alpha:1 位

我尝试使用转换工具通过指定 -depth 16 和 32 来更改它,但它仍然显示通道深度为 8 位。

int main() {

Magick::InitializeMagick("");

Magick::Image image;
Magick::Image image2;
Magick::Image image3;
try {
     // Read a file into image object 
    image.read("D:\\IR\\EXR_Support\\Images\\Desk.exr");
            //Set bit to 32
    image.depth(32);
            image.channelDepth(MagickCore::RGBChannels,32);
            image.write("D:\\IR\\EXR_Support\\Images\\Desk_32Bits.exr");

    }
catch (Magick::Exception &error_)
{
    cout << "Caught exception: " << error_.what() << endl;
    return 1;
}
    return 0;

}

我检查了输出文件的通道深度,我设置了 32 位,但它也显示:
深度:8 位
渠道深度:
红色:8 位
绿色:8 位
蓝色:8 位
Alpha:1 位

我已经用 Quantum 8 位构建了 imagemagick,我希望它应该适用于 16 位和 32 位。

【问题讨论】:

  • EXR 将颜色数据存储为浮点值。使用 Q8 库版本对它们进行解码会显着降低精度。

标签: imagemagick openexr


【解决方案1】:

量子深度,也就是 Q 设置,在编译时指定。你不能在运行时增加它。

如果要处理 32 位图像,则需要以 32 位量子深度重新编译。

【讨论】:

  • 有没有办法编译支持 8 位、16 位和 32 位的通用版本?如果我使用 32 位量子深度进行编译,它将不必要地为 8 位图像保留额外的空间。
  • AFAIK,您可以制作的唯一通用版本是 32 位版本。我不相信在加载 8 位图像后将 depth 设置为 8 会为您节省任何内存 - 我认为每个样本仍将使用 32 位存储 (RAM)。也许比我更有知识的人会评论@fmw42?
  • 如果您使用 IM 7,它默认启用 HDRI。如果格式支持,您可以使用 HDRI 读取和写入 32 位文件。但 Imagemagick 可能只支持“一半”(16 位)文件。我没有这方面的经验。
  • 我尝试使用 IM 7 使用 -define quantum:format=floating-point -depth 32 将 16 位 EXR 文件转换为 32 位,但之后它只显示 16 位。所以看起来 IM 只支持 16 位格式的 EXR。
  • 我用 Q32 构建了 IM,现在当我运行 identify -verbose "Desk.exr" 时,它给出的深度为 32 位。似乎 IM 正在读取具有其构建深度的文件,而与文件深度无关。即使我尝试使用 * convert -depth 16 * 将此文件转换为 16 位,它仍然显示 32 位
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多