python3 使用 imagemagick 压缩图片_imagemagick

前言

在日常的业务开发中,我们经常会有需要压缩图片,节省服务器存储空间的需求。本章节来介绍一下使用 imagemagick 来压缩图片。

官网

http://www.imagemagick.org/script/index.php

在使用这个工具之前,首先需要安装好imagemagick

Centos7的安装方式

yum install ImageMagick -y

windows安装包下载

http://www.imagemagick.org/script/download.php

python3 使用 imagemagick 压缩图片_imagemagick_02

官方提供的第三方库

http://docs.wand-py.org/en/0.5.6/

安装wand

$ pip3 install Wand

运行wand调用imageMagick的示例

from wand.image import Image
from wand.display import display

def main():
with Image(filename='1563928708294.png') as img:
print(img.size)
for r in 1, 2, 3:
with img.clone() as i:
i.resize(int(i.width * r * 0.25), int(i.height * r * 0.25))
i.rotate(90 * r)
i.save(filename='mona-lisa-{0}.png'.format(r))
display(i)

if __name__ == '__main__':
main()

执行完毕后,会自动弹出三个图片的图片,并且保存了三个图片处理后的输出文件。

python3 使用 imagemagick 压缩图片_python3_03python3 使用 imagemagick 压缩图片_python3_04python3 使用 imagemagick 压缩图片_python3_05

可以看到自动弹出的三张图片旋转了不同的角度。

我目前的需求是需要将图片进行压缩,现在来看看压缩的代码。

压缩图片示例

from wand.image import Image
from wand.display import display

def compression(filename):
try:
with Image(filename=filename) as img:
# print(img.size)
with img.clone() as i:
i.resize(int(i.width * 0.7), int(i.height * 0.7)) # 压缩至70%的尺寸大小
i.save(filename='%s'%filename)

except Exception as e:
print(e)

def main():
compression(filename='1563928708294.png')