繁体   English   中英

使用Magick ++创建新图像

[英]Create a new image using Magick++

我有一个这样的向量

typedef struct
{
  int r,g,b;
} __attribute__((__packed__))
rgbs;

vector<rgbs> rgbt;

rgbs rgb;
for(int row=0;row<100; row++)
{
  for(int col=0;col<100; col++)
  {
     rgb.r=col+row;
     rgb.g=col+row;
     rgb.b=col+row;
     rgbt.push_back(rgb);
  }
}

使用magick ++从矢量中形成新图像的有效方法是什么?

我为您定制了Magick ++ API文档中的示例。

Blob blob( &rgbt[0], rgbt.size() / sizeof(rgbt[0]) );
Image image;
image.size( "100x100") 
image.magick( "RGB" ); 
image.read( blob);

但是我不确定是否应该使用一个字节的unsigned char而不是4个字节的int 试试看,您会看到的。

扎菲说得对::

在这种情况下,不能使用32位整数,因为指向红色,蓝色或绿色像素的pixelpacket指针的sizeof是16位。

因此,我们需要使用stdint库中的16位无符号整数

#include<stdint.h>
typedef uint16_t WORD;

现在,在结构rgbs中,我们改为初始化WORD r,g,b。

初始化Blob的方法是:Blob blob(像素数据的地址,数据大小)因此,代码将如下所示:

Blob blob(&rgbt[0],(rgbt.size()*sizeof(rgbt[0]));
Image image;
image.size("100x100");
image.magick("RGB");
image.read(blob);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM