有效地“创造”图像

时间:2011-08-18 03:47:32

标签: c++ image image-processing imagemagick

我先告诉你问题然后我会告诉你我的解决方案。

问题:我的空白白色PNG图像大约为900x900像素。我想要复制30x30像素的圆圈,这些圆圈基本上是具有不同颜色的圆圈。有8个不同的圆圈,并根据我在别处创建的数据值放置在图像上。

解决方案:我使用过ImageMagicK,它可以用于通用图像编辑等。我创建了一个空白图像

    Image.outimage("900x900","white");

我使用“读取”功能上传所有其他小型30x30像素图像 我上传数据并提取数据 我使用复合命令将小'圆'图像放在空白图像上。

    outimage.composite("some file.png",pixelx,pixely,InCompositeOp);

这一切都很好,图像也按照我想要的方式出现。

然而它的痛苦缓慢。做一张图片需要20秒,我有1000张。当然必须有更好的方法来做到这一点。我见过其他研究人员以更复杂,更快的方式模拟图像。我很可能采取了错误的方法。也许我应该“画”圈子而不是“粘贴”它们或其他东西。我很困惑。任何意见都表示赞赏。

2 个答案:

答案 0 :(得分:0)

我怀疑你只需要一些能够在位图上绘制圆圈并将该位图保存为png的库。

例如我的Graphin库:http://code.google.com/p/graphin/ 或者一些这样的。使用Graphin,您还可以在另一个表面上绘制一个PNG。

答案 1 :(得分:0)

您没有提供有关您正在使用的平台的任何信息(仅限“C ++”),因此如果您正在寻找独立于平台的解决方案,那么CImg库可能值得一试。

http://cimg.sourceforge.net/

顺便说一句,您是否尝试使用ImageMagick C ++ API Magick++而不是“编写”它们来绘制圆圈?我不敢相信它那么慢。