python批量图片处理
本文实例讲述了python批量图片处理。分享给大家供大家参考,具体如下:
#!/usr/bin/python
#coding:utf-8
import os
from PIL import Image
#源目录
MyPath = 'C:/Users/Eric/Desktop/python_text/20161214/test_Image/'
#输出目录
OutPath = 'C:/Users/Eric/Desktop/python_text/20161214/outpath/'
def processImage(filesoure, destsoure, name, imgtype):
'''
filesoure是存放待转换图片的目录
destsoure是存在输出转换后图片的目录
name是文件名
imgtype是文件类型
'''
imgtype = 'jpeg' if imgtype == '.jpg' else 'png'
#打开图片
im = Image.open(filesoure + name)
#缩放比例
rate =max(im.size[0]/640.0 if im.size[0] > 60 else 0, im.size[1]/1136.0 if im.size[1] > 1136 else 0)
if rate:
im.thumbnail((im.size[0]/rate, im.size[1]/rate))
im.save(destsoure + name, imgtype)
def run():
#切换到源目录,遍历源目录下所有图片
os.chdir(MyPath)
for i in os.listdir(os.getcwd()):
#检查后缀
postfix = os.path.splitext(i)[1]
if postfix == '.jpg' or postfix == '.png':
processImage(MyPath, OutPath, i, postfix)
if __name__ == '__main__':
run()
希望本文所述对大家Python程序设计有所帮助。
python批量修改图片大小的方法
本文实例为大家分享了python批量修改图片大小的具体代码,供大家参考,具体内容如下
引用的模块
from PIL import Image
Image的使用
def resize_image(img_path):
try:
mPath, ext = os.path.splitext(img_path)
if astrcmp(ext, ".png") or astrcmp(ext, ".jpg"):
img = Image.open(img_path)
(width, height) = img.size
if width != new_width:
new_height = int(height * new_width / width)
out = img.resize((new_width, new_height), Image.ANTIALIAS)
new_file_name = '%s%s' % (mPath, ext)
out.save(new_file_name, quality=100)
Py_Log("图片尺寸修改为:" + str(new_width))
else:
Py_Log("图片尺寸正确,未修改")
else:
Py_Log("非图片格式")
except Exception, e:
print e
def printFile(dirPath):
print "file: " + dirPath
resize_image(dirPath)
return True
引用
if __name__ == '__main__':
path = "E:\pp\icon_setting.png"
new_width = 50
try:
b = printFile(path)
Py_Log("\r\n **********\r\n" + "*********图片处理完毕*********" + "\r\n **********\r\n")
except:
print "Unexpected error:", sys.exc_info()
上述是修改单一的图片,若要批量修改文件夹下的所有图片,则要使用循环,在上面基础添加 例如:
def BFS_Dir(dirPath, dirCallback=None, fileCallback=None):
queue = []
ret = []
queue.append(dirPath);
while len(queue) > 0:
tmp = queue.pop(0)
if os.path.isdir(tmp):
ret.append(tmp)
for item in os.listdir(tmp):
queue.append(os.path.join(tmp, item))
if dirCallback:
dirCallback(tmp)
elif os.path.isfile(tmp):
ret.append(tmp)
if fileCallback:
fileCallback(tmp)
return ret
第一个参数为图片的目录路径,第二个参数是(目录路劲的回掉方法),第三个参数是图片处理回掉方法
源代码参考:Python_Tool
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。
以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。