https://www.cnblogs.com/morethink/p/8419151.html#%E7%9B%B4%E6%8E%A5%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F

https://www.cnblogs.com/brookshi/p/8414881.html

https://www.cnblogs.com/zhouyubo/p/8412840.html

https://www.cnblogs.com/cr330326/p/8419899.html

https://www.cnblogs.com/xybaby/p/8403461.html

http://www.cnblogs.com/xybaby/p/7954610.html

http://www.cnblogs.com/xybaby/p/6406191.html

http://www.cnblogs.com/xybaby/p/6343285.html

https://www.cnblogs.com/liuyun1995/p/8416340.html

https://www.cnblogs.com/AdaminXie/p/8379749.html

https://www.cnblogs.com/JJJ1990/p/8384386.html

https://www.cnblogs.com/zhenlingcn/p/8386214.html

http://www.cnblogs.com/zhenlingcn/p/8337788.html

TutorialDemo001.py

# coding: utf-8

from PIL import Image
import os, sys Int_Len = 5 def getPicInfo(pic):
im = Image.open(pic)
print("--------------------")
print("file name:\t" + im.filename)
print("format:\t\t" + im.format)
print("size:\t\t" + str(im.size))
print("mode:\t\t" + im.mode)
return im def convertFormat(pic, format):
pathNew = getNewFormatPath(pic, format)
try:
im = Image.open(pic)
im.save(pathNew, format)
getPicInfo(pathNew)
return pathNew
except IOError:
print("Cannot create new Format %s for %s." % format, pic)
return None def convertThumbnails(pic, rate=1, format='JPEG'):
pathNew = getThumbnailsPath(pic, r"thumbnails", format)
if (pic != pathNew):
try:
im = Image.open(pic)
size = (int(im.size[0] * rate), int(im.size[1] * rate))
im.thumbnail(size)
im.save(pathNew, format)
getPicInfo(pathNew)
return pathNew
except IOError:
print("Cannot create thumbnail for ", pic)
return None def getNewFormatPath(pic, format):
pathSegs = os.path.splitext(pic)
count = 1
while True:
pathNew = pathSegs[0] + r"-" + str(count).zfill(Int_Len) + "." + format.lower()
if os.path.exists(pathNew):
count += 1
pathNew = pathSegs[0] + r"-" + str(count).zfill(Int_Len) + "." + format.lower()
else:
return pathNew def getThumbnailsPath(pic, suffix, format):
pathSegs = os.path.splitext(pic)
count = 1
while True:
pathNew = pathSegs[0] + r"-" + str(count).zfill(Int_Len) + r"-" + suffix + "." + format.lower()
if os.path.exists(pathNew):
count += 1
pathNew = pathSegs[0] + r"-" + str(count).zfill(Int_Len) + r"-" + suffix + "." + format.lower()
else:
return pathNew if __name__ == "__main__":
pic1 = r"res/MIT-001.jpg"
pic2 = r"res/MIT-002.jpg" # im = getPicInfo(pic1)
# r,g,b = im.split()
# r.rotate(45).show()
# g.resize((100,200)).show()
# b.show()
# im.convert("L").convert("RGB").show() # convertThumbnails(pic1, 0.5) path = convertFormat(pic1, 'PNG')
print(os.path.abspath(path))

  

python pillow的更多相关文章

  1. python Pillow 图片处理模块,好强大有没有

    python Pillow 图片处理模块,好强大有没有 Pillow 需要给 python 另外安装 第一个用法:https://www.cnblogs.com/ibingshan/p/1105739 ...

  2. [ller必读] LoveLive! 必备技能之 Python Pillow 自动处理截图

    起因 喜欢的歌,静静地听:喜欢的人,远远的看.30天前,就是3月14号,我情不自禁地走近了<LoveLive!学院偶像祭>,这是我的第一张卡片(见下图).第二天也就是3月15日,海未生日了 ...

  3. python pillow模块用法

    pillow Pillow是PIL的一个派生分支,但如今已经发展成为比PIL本身更具活力的图像处理库.pillow可以说已经取代了PIL,将其封装成python的库(pip即可安装),且支持pytho ...

  4. Python pillow库安装报错

    报错信息: D:\pythontest\duanxinhongzha>pip3 install pillowCollecting pillow Could not find a version ...

  5. Python pillow库

    由于pillow库功能很强大本文章主要介绍pillow的Image模块 关于Pillow与PIL PIL(Python Imaging Library)是Python一个强大方便的图像处理库,名气也比 ...

  6. 基于Python Pillow库生成随机验证码

    from PIL import Image from PIL import ImageDraw from PIL import ImageFont import random class ValidC ...

  7. python pillow 处理图片

    demo1 #打开图片,并随机添加一些椒盐噪声 from PIL import Image import numpy as np import matplotlib.pyplot as plt img ...

  8. python pillow 绘制图片

    demo1 #coding=utf- from PIL import Image img = Image.,))###创建一个5*5的图片 pixTuple = (,,,)###三个参数依次为R,G, ...

  9. 使用python拼接多张图片.二三事

    前几日在博客上看到一篇“使用python拼接多张图片”的Blog[具体是能将的图片名字必须是形如xx_1.png ... xx_100.png或者xx_001.png ... xx_100.png,拼 ...

随机推荐

  1. day0319 模块

    一.序列化 将原本的字典,列表等内容转化成一个字符串的过程就是序列化. 序列化的目的: 1.以某种存储形式使自定义对象持久化 2.将对象从一个地方传递到另一个地方. 3.程序更具有维护性 二. Jso ...

  2. [knowledge][DPI] kernel bypass 高性能网络包处理的宏观思路

    高性能网络包处理,这个问题的出现,主要原因在于linux内核协议栈的处理能力,已经跟不上日益增长的网卡吞吐量以及数据量. 有关详细的内核协议栈瓶颈的阐述,可以参考如下这篇文章: <Improvi ...

  3. java 集合(五)MapDemo

    package cn.sasa.demo3; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedH ...

  4. 第二章 构建布局良好的windows程序

    工具箱→菜单和工具栏 菜单栏 MenuStrip的类型 MenuItem:菜单项 TextBox:文本框 ComboBoX:组合框 Separato:分割线 前面都有ToolStrip做前缀 Appl ...

  5. MySQL crash-safe replication【转载】

    本文来自david大神的博客,innodb技术内幕的作者. http://insidemysql.blog.163.com/blog/static/202834042201385190333/ MyS ...

  6. MongoDB pymongo模块 更新数据

    现在chat集合里有3条数据 import pymongo mongo_client = pymongo.MongoClient( host='192.168.0.112', port=27017, ...

  7. kafka3 本地目录结构以及在在zk上的znode

    一 kafka本地目录结构 [root@hadoop ~]# cd /tmp/kafka-logs1 [root@hadoop kafka-logs1]# find . . ./.lock ./rec ...

  8. ABPIAbpSession

    AbpSession定义了几个关键属性: UserId:当前用户的Id或空(如果没有当前用户),如果调用需要授权的代码,它就不能为空. TenantId:当前租户的Id或空(如果没有当前租户:尚未登录 ...

  9. [django]Django外键(ForeignKey)操作以及related_name的作用

    https://blog.csdn.net/hpu_yly_bj/article/details/78939748 related_name表面作用 加上 核心related_name作用 https ...

  10. [sh]getopt参数解析

    https://www.cnblogs.com/FrankTan/archive/2010/03/01/1634516.html sh参数处理方法 * 手工处理方式 * getopts #好像不支持长 ...