Python使用ImageMagick进行图像处理指南

2021-06-07  本文已影响0人  python测试开发

在图像处理方面,Python是一门广泛使用的编程语言。每当我们为建立模型处理图像数据时,对图像的预处理是至关重要的。在预处理中,我们确保图像具有正确的尺寸和正确的类型。除了pilllow、opencv等,ImageMagick处理图像也很方便。

Imagemagick简介

ImageMagick可创建、编辑、编排或转换位图图像。它可以读取和写入各种格式的图像(超过200种),包括PNG、JPEG、GIF、HEIC、TIFF、DPX、EXR、WebP、Postscript、PDF和SVG等。使用ImageMagick来调整大小、翻转、镜像、旋转、扭曲、剪切和转换图像,调整图像颜色,应用各种特殊效果,或绘制文本、线条、多边形、椭圆和贝塞尔曲线。

ImageMagick的通常在命令行中使用,或者你可以从用你喜欢的编程语言编写的程序中使用这些功能。比如PythonMagick(Python),G2F(Ada),MagickCore(C),MagickWand(C),ChMagick(Ch),ImageMagickObject(COM+),Magick++(C++),JMagick(Java),L-Magick(Lisp),NMagick(Neko/haXe),MagickNet(。 NET)、PascalMagick(Pascal)、PerlMagick(Perl)、MagickWand for PHP(PHP)、IMagick(PHP)、、Magick(R)、RMagick(Ruby)或TclMagick(Tcl/TK)。

ImageMagick利用多个计算线程来提高性能,可以读取、处理或写入百万、千兆或兆像素的图像尺寸。

ImageMagick的官网是https://imagemagick.org。源代码库是https://github.com/ImageMagick/ImageMagick

Imagemagick能做什么?

下载Imagemagick

# apt install imagemagick
# pip install wand

读取图像的尺寸

>>> from wand.image import Image
>>> ny = Image(filename ='wugang.jpg')
>>> print(ny.height, ny.width)
324 550

将图像从jpg转换成png

>>> ny_convert = ny.convert('png')
>>> ny_convert.save(filename ='wugang.png')

模糊图像

>>> ny = Image(filename ='wugang.jpg')
>>> ny.blur(sigma = 4)
True
>>> ny.save(filename ="wugang_blur.jpg")

翻转图像

>>> ny = Image(filename ='wugang.jpg')
>>> flip_ny = ny.clone()
>>> flip_ny.flip()
True
>>> flip_ny.save(filename ='flip_wugang.jpg')

旋转图像

>>> ny2 = ny.clone()
>>> ny2.rotate(45)
True
>>> print(ny2.height, ny2.width)
620 620
>>> ny2.save(filename ='rotate_wugang.jpg')

裁剪图像

>>> ny2 = ny.clone()
>>> ny2.crop(50, 90, 200, 300)
True
>>> ny2.save(filename = 'wugang_cropped.jpg')

创建边缘

>>> ny2 = ny.clone()
>>> ny2.edge(radius = 1)
True
>>> ny2.save(filename="edge_wugang.jpg")

素描

>>> ny2 = ny.clone()
>>> ny2.sketch(0.5, 0.0, 98.0)
True
>>> ny2.save(filename="wugang_sketch.jpg")

使用transform_colorspace()函数并传递'grey'作为参数。输出将是黑白素描。

>>> ny2 = ny.clone()
>>> ny2.transform_colorspace('gray')
True
>>> ny2.sketch(0.5, 0.0, 98.0)
True
>>> ny2.save(filename="wugang_sketch_gray.jpg")

灰度素描
同样,我们还可以在图像上应用其他的特殊效果,如添加噪音、polaroid、漩涡、色调、波浪、太阳化等。

调整大小

>>> ny2 = ny.clone()
>>> ny2.resize(200,100)
True
>>> ny2.save(filename="wugang_resize.jpg")

参考资料

将PDF转换为图像

from wand.image import Image

ny = Image(filename ='test.pdf')
ny_converted = ny.convert('jpg')
ny_converted.save(filename='test.pdf.jpg')

添加文字水印

from wand.image import Image
from wand.drawing import Drawing
ny = Image(filename = 'wugang.jpg')
draw = Drawing()
draw.font = '/usr/share/fonts/truetype/arphic/ukai.ttc'
draw.font_size = 20
draw.text(10, 100, '技术支持钉钉或v信 pythontesting')
draw(ny)
ny.save(filename='text wuang.jpg')

linux查看中文字体

$ fc-list | grep -i cn
上一篇 下一篇

猜你喜欢

热点阅读