【问题标题】:Save a Image instance as png Magick++将图像实例另存为 png Magick++
【发布时间】:2014-11-22 05:26:53
【问题描述】:

这是我关于 Magick++ 的第 3rd 个后续帖子,尽管我自己花费了大量的精力来处理它。

我有这个程序:

int main( int argc, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  try {

    Image button;
    Geometry size = Geometry(10,10);
    button.size(size);
    button.write("button_out.png");
  }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      system("Pause");
      return 1;
    }
  /*
  */

  return 0;
}

如您所见,我要做的就是将 10x10 的空图像保存到 png 文件中。不幸的是,Magick++ 无法做到这一点:

Caught exception: stripes.exe: no encode delegate for this image format `' @ err
or/constitute.c/WriteImage/1167
Pokračujte stisknutím libovolné klávesy...

这是一个很大的失望。我花了六个小时让图书馆开始工作,最终完成了这个。但我认为 Magick++ 最终有能力做到这一点。因此问题是,我做错了什么?

我应该在某个地方包含/要求/加载一些允许PNG 保存的模块吗?

【问题讨论】:

  • 尝试将其保存为 GIF 或 JPEG 格式,看看其他的是否正常。如果是这样,问题是您没有正确安装 PNG 委托,或者正如@rafalon 所建议的那样。
  • @MarkSetchell Gif 是唯一可行的方法。
  • 嗯,这告诉我们你的代码和编译过程是正确的,所以问题在于代理的安装 - 这些是 ImageMagick 用来完成各种标准工作的helper tools。你可以从这里下载它们...imagemagick.org/download/delegates
  • 这些是一些带有源代码的档案吗?我该怎么处理他们……?为什么一切都这么复杂? :(

标签: c++ magick++


【解决方案1】:

您是否将 DLL 放在二进制文件夹中?你知道PNG是用zlib压缩的吧?例如:当您使用 SDL 库并使用 PNG 时,您需要将 zlib 和 libpng DLL 放在 bin 文件夹中,以允许程序读取和写入 PNG 文件。

【讨论】:

  • 这些是唯一看起来可用的 dll:CORE_RL_bzlib_.dllCORE_RL_jpeg_.dllCORE_RL_png_.dllCORE_RL_zlib_.dllIM_MOD_RL_png_.dll。我将它们复制到程序位置和程序工作目录。都没有解决问题。你能告诉我更多关于加载 DLL 的信息吗?
  • 我没有能力谈论加载 DLL,但 Magick 因为大多数库都是自己加载 DLL。
  • 我的意思是,我到底应该从哪里得到这些 dll?
  • 您在 google 中搜索例如:“libpng for windows”第一个链接。
猜你喜欢
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 2016-08-28
  • 2012-10-16
  • 2017-09-23
  • 1970-01-01
相关资源
最近更新 更多