python Pillow 图像处理

关于Pillow与PIL
PIL(Python Imaging Library)是Python一个图片处理工具 支持到Python 2.7。

Pillow的文档
https://pillow.readthedocs.org/en/latest/handbook/index.html
https://pillow.readthedocs.io/en/latest/index.html

中文翻译(版本差别比较大)
http://pillow-cn.readthedocs.io/zh_CN/latest/

先来一部分简单的应用:
场景:上传了很多高清图片 因为图片过大打开加载很慢,需要对原图进行压缩,网上找了一些在写工具处理不是很理想 便有了如下的图片压缩处理代码

vim image.py(比较简单 就不再过多解释)
#--------------------------------------------------------------
#!/usr/bin/env python
#-*- coding:utf-8 -*-
# http://www.zhangluya.com

import os
from PIL import Image
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True

#内置模块imghdr可以用来判断图片的真实类型
import imghdr

import re

def img(image,rename):
    #打开一个jpg图像文件(当前路径)
    im = Image.open(image)

    #获得图像尺寸
    w,h = im.size
    print('原图尺寸: %sx%s' % (w, h))

    #缩放到50%:
    im.thumbnail((w//2, h//2))
    print('处理后大小: %sx%s' % (w//2, h//2))

    #把缩放后的图像用jpeg格式保存:
    im.save( "new/" + rename + '_.jpg', 'jpeg')

files = os.listdir("/image")
print files;

for pic in files:
    imgType = imghdr.what(pic)
    if imgType:
        img(pic,re.split(r"\.",pic)[0])
    elif os.path.isfile(pic):
        print pic + "is id dir"
    else:
        print pic + "is not imgType or dir"
#--------------------------------------------------------------
使用了下 还不错 就去网上看了下相关的教程~ 以下为实操练习


打印出图片基本信息
#--------------------------------------------------------------
[root@bj-2-a-center-01 pillow]# cat use_image_class.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-

from __future__ import print_function
import os
from PIL import Image
from PIL import ImageFile

ImageFile.LOAD_TRUNCATED_IMAGES = True

im = Image.open("road.jpg")

#format 标识图像来源 不是从文件读取就是None
#size include width and heigh
#mode 定义了图像bands的数量和名称以及像素类型和深度

print(im.format,im.size,im.mode)


[root@bj-2-a-center-01 pillow]# python use_image_class.py
JPEG (2448, 3264) RGB



jpg 转换为png格式测试 
#--------------------------------------------------------------
[root@bj-2-a-center-01 pillow]# cat write_read_img.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-

"""转换图片为PNG"""

from __future__ import print_function
import os,sys
from PIL import Image


#sys.argv[1:] 列出传入的所有参数值
for infile in sys.argv[1:]:

    #分离文件名和扩展名
    f,e = os.path.splitext(infile)

    outfile = f + ".png"
    if infile != outfile:
        try:
            Image.open(infile).save(outfile)
        except IOError:
            print("cannot convert", infile)

[root@bj-2-a-center-01 pillow]# python write_read_img.py road.jpg
[root@bj-2-a-center-01 pillow]# du -sh *
3.2M	road.jpg
16M	road.png

其它的可以参考官方文档使用:https://pillow.readthedocs.io/en/latest/installation.html

2 thoughts on “python Pillow 图像处理”

发表评论

电子邮件地址不会被公开。 必填项已用*标注