加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Python实行图片压缩(附代码)

(2020-06-24 12:10:26)
标签:

365

python

分类: Python学习
     这是一个用Python写的图片压缩代码,只有20来行,但能压缩图片大小至原来的三分之一,而像素不变。不是我写的,我只是增加了一个if语句,用来判断图片是竖拍还是横拍,以解决原来竖拍图片压缩时变形的问题。
     用到三个库,分别是os、PIL、glob,需要先安装,这个自己安装一下吧,也简单的。
     代码在win10、Python3.7.6环境下调试通过。

以下是代码:

# -*- coding: utf-8 -*-
"""
Created on Mon Jun  1 10:28:41 2020
功能:图片压缩
     图片大小可以调整
      源图片存放目录需要修改
      新图片目录没有则建一个,在当前目录下新建
      可以压缩整个目录的图片,图片数量无限制
      压缩速度还是挺快的。
      默认图片格式为.jpg,可以根据实际需要修改
可以运行,2020.6.1

"""

import os
from PIL import Image
import glob

#在程序中设置图片源目录路径,根据实际修改
DIR = r'e:\python\image/'

class Compress_Picture(object):
    def __init__(self):
        # 图片格式,可以换成.bpm等
            self.file = '.JPG'

        # 图片压缩批处理

    def compressImage(self):

        for filename in glob.glob('%s%s%s' % (DIR, '*', self.file)):
            # print(filename)
            # 打开原图片压缩
            sImg = Image.open(filename)
            w, h = sImg.size
            print(w, h)
            if w < h: 
                #如果是直拍,那就用直拍模式
                dImg = sImg.resize((2976, 3968), Image.ANTIALIAS)  # 设置压缩尺寸和选项,注意尺寸要用括号
            else:
                #如果是横拍,那就用横拍模式
                dImg = sImg.resize((3968, 2976), Image.ANTIALIAS)  # 设置压缩尺寸和选项,注意尺寸要用括号
            # 像素: 3968 * 2976
            # 自己根据图片像素大小调整
            # 如果不存在目的目录则创建一个
            comdic = "%s图片压缩后目录/" % DIR
            if not os.path.exists(comdic):
                os.makedirs(comdic)

                # 压缩图片路径名称
            f1 = filename.split('/')
            f1 = f1[-1].split('\\')
            f2 = f1[-1].split('.')
            f2 = '%s%s%s' % (comdic, f2[0], self.file)
            # print(f2)
            dImg.save(f2)  # save这个函数后面可以加压缩编码选项JPEG之类的
            print("%s 压缩成功" % f1[-1])


if __name__ == "__main__":
    obj = Compress_Picture()
    obj.compressImage()

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有