Imagemagick魔杖使用深度不像命令行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Imagemagick魔杖使用深度不像命令行相关的知识,希望对你有一定的参考价值。
所以我曾经在这样的bash脚本中直接运行imagemagick:
/usr/local/bin/convert image.jpg -resize 1000x1000! -depth 2 result.jpg
所以我决定使用魔杖将我的脚本转换为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中的深度选项不起作用?
答案
JPG不支持深度2.它总是输出到深度8,量化将增加更多颜色。尝试使用PNG或GIF或带有-depth 2的TIFF命令。这有用吗?
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.image.Image.quantize
方法,并将颜色减少到4(黑/白+ 2种颜色)。
from wand.image import Image
...
with Image(file=f) as img:
img.transform(resize='1000x1000!')
img.quantize(4, # Number of colors
'gray', # Colorspace
0, # Tree depth
False, # Dither
False) # Measure Error
img.save(filename='result_py.jpg')
f.close()
...
我相信quantize
方法是在版本0.4.2中添加的。另请注意,魔杖目前支持ImageMagick-6,因此您的系统可能同时安装了6和7。
以上是关于Imagemagick魔杖使用深度不像命令行的主要内容,如果未能解决你的问题,请参考以下文章
通过 ImageMagick 或 GhostScript 命令行旋转 .EPS 文件