Python Imagemagick魔杖深度的使用与命令行不同
因此,我曾经在bash脚本中运行imagemagick direct,如下所示:Python Imagemagick魔杖深度的使用与命令行不同,python,linux,imagemagick,wand,color-depth,Python,Linux,Imagemagick,Wand,Color Depth,因此,我曾经在bash脚本中运行imagemagick direct,如下所示: /usr/local/bin/convert image.jpg -resize 1000x1000\! -depth 2 result.jpg 所以我决定用wand将我的脚本转换成python from wand.image import Image ... with Image(file=f) as img: img.transform(resize='1000x1000!') img.d
/usr/local/bin/convert image.jpg -resize 1000x1000\! -depth 2 result.jpg
所以我决定用wand将我的脚本转换成python
from wand.image import Image
...
with Image(file=f) as img:
img.transform(resize='1000x1000!')
img.depth = 2
img.save(filename='result_py.jpg')
f.close()
...
我注意到,如果我从bash脚本中删除“-depth 2”,结果图像将与python的结果完全相同,那么python程序中缺少什么呢?为什么python中的depth选项不起作用?JPG不支持depth 2。它总是输出到深度8,量化将添加更多颜色。请使用PNG或GIF或TIFF以及-depth 2尝试您的命令。这样行吗
convert -size 256x256 gradient: -depth 2 grad_d2.jpg
Depth: 8-bit
Colors: 10
Histogram:
10752: ( 0, 0, 0) #000000 gray(0)
256: ( 1, 1, 1) #010101 gray(1)
512: ( 84, 84, 84) #545454 gray(84)
20992: ( 85, 85, 85) #555555 gray(85)
256: ( 86, 86, 86) #565656 gray(86)
256: (169,169,169) #A9A9A9 gray(169)
21248: (170,170,170) #AAAAAA gray(170)
256: (171,171,171) #ABABAB gray(171)
256: (254,254,254) #FEFEFE gray(254)
10752: (255,255,255) #FFFFFF gray(255)
convert -size 256x256 gradient: -depth 2 grad_d2.png
Depth: 8/2-bit
Colors: 4
Histogram:
11008: ( 0, 0, 0) #000000 gray(0)
21760: ( 85, 85, 85) #555555 gray(85)
21760: (170,170,170) #AAAAAA gray(170)
11008: (255,255,255) #FFFFFF gray(255)
也许Wand有一个bug,或者您使用的版本太旧了?生成的图像应该与JPG或PNG相似,但JPG的颜色更相似。使用Python的wand库,您需要使用
wand.image.image.quantize
方法,并将颜色减少到4(黑/白+2色)
从wand.image导入图像
...
图像(文件=f)作为img:
img.transform(resize='1000x1000!')
图像量化(4,#颜色数
“灰色”,颜色空间
0,#树深度
假,犹豫不决
假)#测量误差
保存(filename='result\u py.jpg')
f、 关闭()
...
我相信
quantize
方法是在版本0.4.2中添加的。另外请注意,wand目前支持ImageMagick-6,因此您的系统可能同时安装了6和7。我尝试使用您的第一个图像作为输入,并使用convert
和wand.image
生成完全相同的图像-但是,如果您运行identification-verbose result.jpg
,它显示深度:8位
…发布原始图像。你的ImageMagick版本是什么?什么版本的魔杖?如果不是最新版本,请尝试升级。@更多信息,您可以使用第二个映像作为原始映像进行测试。原始图像(image.jpg)是第二个图像的25x25大小one@fmw42origina(image.jpg),python-m wand.version 0.3.8版本:ImageMagick 7.0.7-22 Q16 x86_64 2018-02-08Wand位于0.4.4。您可以尝试升级。ImageMagick的版本是7.0.8.11 Q16,但您的版本似乎足够新,并且工作正常。当我将你的图像处理为jpg和png时,它们看起来很相似。但是JPG有103种颜色,256种颜色,深度为8。PNG有2种颜色和4种颜色的颜色映射。好的,我更新到了0.4.4,并添加了img.format='PNG'现在它像一个字符一样工作了它现在也适用于jpg吗?它看起来应该很相似,只是jpg压缩的颜色更接近。这在我看来就像魔杖里的一个bug。但我不是魔杖专家。我建议你把这个问题发布给Wand开发者。