自己写博客的时候常常要插入一些手机拍的照片,都是几M的大小,每张手动压缩太费事了,于是根据自己博客的排版特点用Python写了一个简单的图片压缩脚本,功能是将博客图片生成缩略图,横屏的图片压缩为宽度最大1280像素,竖屏的图片压缩为宽度最大1000像素。

代码如下:

#!/usr/bin/env python3  
# coding=utf-8
' 蒋方正Python函数库 '
__author__ = 'Sandeepin'

import math
import os
from PIL import Image

# 功能:博客图片生成缩略图,1280横屏压缩,1000竖屏压缩
# 参数:图片名称
# 返回:OK,保存同名文件在thumb目录下
def JfzBlogImgThumb(ImgName):
    im = Image.open(ImgName)
    print('格式',im.format, ',分辨率',im.size, ',色彩',im.mode)
    if max(im.size[0], im.size[1]) > 1000:
        if im.size[0] > im.size[1]:
            im.thumbnail((1280, 1280))
        else:
            im.thumbnail((1000, 1000))
        if ImgName.endswith('.JPG'):
            ImgName = ImgName.replace('.JPG','.jpg')
        if ImgName.endswith('.png'):
            ImgName = ImgName.replace('.png','.jpg')
        if ImgName.endswith('.PNG'):
            ImgName = ImgName.replace('.PNG','.jpg')
        im.save('thumb\\'+ImgName, 'JPEG', quality=90)
    #if max(im.size[0], im.size[1]) <= 1000:
    #    im.save('thumb\\'+ImgName, 'JPEG', quality=100)
    return 'OK'

# JfzBlogImgThumb('1.jpg')
# JfzBlogImgThumb('2.jpg')

# 列出当前目录所有jpg文件
lst=os.listdir(os.getcwd())
imgname = [c for c in lst if os.path.isfile(c) and (c.endswith('.jpg') or c.endswith('.JPG') or c.endswith('.png') or c.endswith('.PNG'))]
print(imgname)

# 全处理
OutCheck = map(JfzBlogImgThumb,imgname)
print(list(OutCheck))