c - 如何通过GraphicsMagick C API实现 "gm convert -profile"?

标签 c imagemagick imagemagick-convert graphicsmagick color-space

我想将输入 JPEG 图像转换为 sRGB 颜色配置文件。

这个 cli 变体运行良好:

gm convert src.jpg -profile sRGB.icc -strip dst.jpg

但是这个变体不起作用:

FILE *f = fopen("./sRGB.icc", "rb");
fseek(f, 0, SEEK_END);
long fsize = ftell(f);
fseek(f, 0, SEEK_SET);
unsigned char *profile = malloc(fsize);
n = fread(string, 1, fsize, f);
fclose(f);

res = ProfileImage(image, "ICM", profile, fsize, MagickFalse); // also try "ICC"
// got MagickFail

我该怎么做?

最佳答案

我用 liblcms.a 重建了最新的 libgraphicsmagicks.a,一切都很好。

unsigned char sRGB_icc[] = {...}; // save sRGB.icc in source code
unsigned int sRGB_icc_len = ...;

ProfileImage(image, "ICM", sRGB_icc, sRGB_icc_len, MagickTrue); // "-profile"
ProfileImage(image, "*", NULL, 0, MagickFalse); // "-strip"

关于c - 如何通过GraphicsMagick C API实现 "gm convert -profile"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33964783/

相关文章:

Imagemagick添加和阅读评论

c - 整数溢出测试运算符? (&+)

c - 为什么将 char 传递给函数会改变它在 c 中的值?

计算最大公约数

ruby-on-rails-3 - Rails 3 和 RefineryCMS - Dragonfly::Shell::CommandFailed in Refinery::Admin::ImagesController#create

imagemagick - 使用并行和 Imagemagick 将图像转换为 gif

从 C 到 SPARC 的字符数组转换

ImageMagick:如何修复委托(delegate)失败 `' potrace' 错误

imagemagick - 如何在 imagemagick 上将图像 move (平移)X、Y 偏移量?

c# - Magick Image 在图像后面创建阴影