我正在尝试将Magick++ API (ImageMagick的一部分)用于c++,我已经浏览了很长一段时间,还没有在谷歌上看到那么多文档或示例。关于它有很多很好的文档,但是我找不到任何关于如何使用ping() (而不是网络ping)函数来返回c++程序中图像大小的信息。我试图创建一个blob对象,并像在错误中看到的那样使用它。
我看过很多相同的一般手册,比如:
http://web.mit.edu/graphics/share/ImageMagick/www/Magick++/Image.html#Image%20Attributes,与http://www.imagemagick.org/Magick++/Image.html相同
我在“图像处理方法”下查看了ping,并看到它以一个const Blob &blob_作为输入。我试着做了以下工作,尽管我不太确定我在用ping()做什么。我还有很多事情要做,只是搞不清楚。
#include <Magick++.h>
#include <iostream>
using namespace std;
using namespace Magick;
int main(int argc,char **argv)
{
InitializeMagick(*argv);
Image master("horse.jpg");
Image second = master;
// tried creating a blob (Binary Large OBject) per the error
Blob blob;
master.write ( &blob);
cout << blob.ping(&blob) << endl;
// also tried
// cout << master.ping() << endl;
// cout << master.ping( &blob) << endl;
return 0
} 我甚至找不到很多关于Magick++或ping的例子。
test3.cpp:15:26: note: candidates are:
In file included from /usr/include/ImageMagick/Magick++.h:10:0,
from test3.cpp:1:
/usr/include/ImageMagick/Magick++/Image.h:501:21: note: void Magick::Image::ping(const string&)
void ping ( const std::string &imageSpec_ );
^
/usr/include/ImageMagick/Magick++/Image.h:501:21: note: candidate expects 1 argument, 0 provided
/usr/include/ImageMagick/Magick++/Image.h:507:21: note: void Magick::Image::ping(const Magick::Blob&)
void ping ( const Blob &blob_ );
^
/usr/include/ImageMagick/Magick++/Image.h:507:21: note: candidate expects 1 argument, 0 provided因此,我猜ping返回了手册中没有提到的void。我甚至不知道我怎么能从中得到价值。我应该看看源代码吗?有人知道我在哪里能找到更多关于这个的读物吗?或者是否有人熟悉Magick++。很抱歉,我对此一无所知,但谷歌并没有给我带来太多的结果。
任何帮助都将不胜感激!
发布于 2015-03-09 09:45:58
ping的返回类型是'void‘,因为它的操作与read几乎相同。ping方法从图像中读取所有元数据,但一旦到达包含‘像素数据’的部分,就停止处理图像。您不能读取‘像素数据’,但是您可以在图像被'pinged‘之后获得列()和行()。这些信息也可以在Magick++的文档中找到:http://www.imagemagick.org/Magick++/Image.html。
下面是如何使用ping方法的示例:
#include <Magick++.h>
#include <iostream>
using namespace std;
using namespace Magick;
int main(int argc,char **argv)
{
InitializeMagick(*argv);
Image master;
master.ping("horse.jpg");
cout << master.columns() << "x" << master.rows() << endl;
return 0;
} https://stackoverflow.com/questions/28934131
复制相似问题