Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Python中的原始数据字符串使用magick wand创建图像_Python_Wand_Raw Data_Magickwand - Fatal编程技术网

如何从Python中的原始数据字符串使用magick wand创建图像

如何从Python中的原始数据字符串使用magick wand创建图像,python,wand,raw-data,magickwand,Python,Wand,Raw Data,Magickwand,我有一个原始数据字符串,例如: raw_data = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

我有一个原始数据字符串,例如:

raw_data = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3300005CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3300002BFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9500B158DFFFF3300002BFFFFFFFFFFFFFFFFFFFFFFFFFFFFB200000003FFFF3300002BFFFFFFFFFFFFFFFFFFFFFFFFFFFFB100000002FFFF3300002BFFFFFFFFFFFFFFFFFFFFFFFFFFFFF643040B80FFFF3300002BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF3300002BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3300002BFFED843913051B59D1FFFFFFFFFFFF03000184FFFF3300002BAB0F00000000000007BBFFFFFFFFFF03000057FFFF330000080100000000000000001DF8FFFFFFFF03000057FFFF330000000042A9D4D08D0D000000ADFFFFFFFF03000057FFFF330000059DFFFFFFFFFFAA00000070FFFFFFFF03000057FFFF3300002BFFFFFFFFFFFFFA05000051FFFFFFFF03000057FFFF3300002BFFFFFFFFFFFFFF18000045FFFFFFFF03000057FFFF3300002BFFFFFFFFFFFFFF1B000043FFFFFFFF03000057FFFF3300002BFFFFFFFFFFFFFF1B000043FFFFFFFF03000057FFFF3300002BFFFFFFFFFFFFFF1B000043FFFFFFFF03000057"
我想知道如何用它创建一个可视的.png

我试着用

将wand.image.image(??)作为img:

但我不知道该把什么放在括号里。我尝试了
file=raw\u数据,宽度=25,高度=25,深度=8

无论我尝试什么,它都会给我一个错误


有什么想法吗?

您需要将字符串转换为字节,并实现ImageMagick的
MagickImportImagePixels
C-API方法

导入binascii
导入ctypes
从wand.api导入库
从wand.image导入图像
从wand.color导入颜色
#将C-API映射到Python
# -------------------
#magick image.h
#WandExport MAGICKBOOLENTYPE MagickImportImagePixels(MagickWand*wand,
#常量大小x、常量大小y、常量大小列、常量大小行、,
#常量字符*映射,常量存储类型存储,常量无效*像素)
library.MagickImportImagePixels.argtypes=(ctypes.c\u void\u p,
ctypes.c\u ssize\t,
ctypes.c\u ssize\t,
ctypes.c_size_t,
ctypes.c_size_t,
ctypes.c_char_p,
ctypes.c_int,
ctypes.c_void_p)
#映射枚举存储类型
StorageType=('undefined'、'char'、'double'、'float',
‘整数’、‘长’、‘量’、‘短’)
#扩展wand.image.image以实现导入像素方法
类MyImage(图像):
def导入像素(自身、blob、像素格式='RGBA',像素大小='char'):
存储类型=存储类型索引(像素大小)
library.MagickImportImagePixels(self.wand,
0,
0,
自宽,
自我高度,
像素_格式.encode(),
存储单元类型,
水滴)
#用法
原始数据字符串='FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3300005FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3300002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3300002BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3300002BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3300002BFED843913051B59D1FFFFFFFFFFFF03000184FFFF3300002BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3300007BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3300002BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3300002BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0057FFFF3300002BFFFFFFFFFFF18000045FFFFFFFF03000057FFFF3300002BFFFFFFFFFFFFF1B000043FFFFFFFFFF03000057FFFF3300002BFFFFFFFFFFFFF1B000043FFFFFFFFFFFFFFFF03000057FFFFFF3300002BFFFFFFFFFFFFFFFFF1B000043FFFFFFFFFF03000057'
原始数据字节=binascii.unhexlify(原始数据字符串)
将MyImage(宽度=25,高度=25,背景=颜色(‘白色’)作为img:
img.import_像素(原始数据字节、像素格式、像素大小)
保存(filename='output.png')


正如评论中所指出的,您将负责了解/定义通道布局(即
RGBA
BGR
ARBG
&tc)、数据类型大小(即char/short/int/long或float/double)、数据流布局(如),当然还有预期图像的实际宽度/高度

如果不了解所用存储的所有细节,您将无法做很多事情。那么,原始数据是什么?你喜欢什么?C-排序与Fortran排序?有多少频道?比特深度?啊好,;分辨率(x和y)也一样。我怎么才能发现呢?顺便问一下,我生成了它?为什么会有人生成这样的东西?但是。。。对如果你创建了这些,那么你可能应该知道所有的细节。非常感谢,这很有效。当我使用
RGBA
作为像素格式时,为什么会出现分割错误?那将是缓冲区溢出。您有一个625个8位整数的缓冲区——这刚好足以覆盖一个颜色通道。对于完整的
RGBA
您需要
25(宽)x25(高)*4(RGBA)=2500