[英]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.