【学习】python 对图片文件批量重命名和删除不符合的图片

 

 

 

python 文件批量重命名

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys

class ImageRename():
    def __init__(self):
        self.path = os.path.dirname(os.path.abspath(sys.argv[0]))

    def rename(self):
        filelist = os.listdir(self.path)
        total_num = len(filelist)

        i = 0
        for item in filelist:
            if item.endswith('.jpg'):
                src = os.path.join(os.path.abspath(self.path), item)
                dst = os.path.join(os.path.abspath(self.path), '0000' + format(str(i), '0>3s') + '.jpg')
                os.rename(src, dst)
                #print 'converting %s to %s ...' % (src, dst)
                i = i + 1
        #print 'total %d to rename & converted %d jpgs' % (total_num, i)

if __name__ == '__main__':
    newname = ImageRename()
    newname.rename()

  

python判断图片宽度和高度后删除图片的方法

Image对象有open方法却没有close方法,如果打开图片,判断图片高度和宽度,判断完成后希望删除或者给图片改名,是无法操作的,这段代码可以解决这个问题,注意open函数打开图片文件要使用二进制方式,及参数使用'rb',有的文章给出的只有个'r'参数,Image是无法open的

import os
from PIL import Image
fileName = 'c:/py/jb51.jpg'
fp = open(fileName,'rb')
im = Image.open(fp)
fp.close()
x,y = im.size
if x <300 or y < 300:
   os.remove(fileName)

  

 两者结合到一起使用,先判断图片是否符合尺寸要求,符合就重命名,不符合则删除

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
from PIL import Image


class Rename_screen():
    def __init__(self):
        self.path = os.path.dirname(os.path.abspath(sys.argv[0]))

    def r_s(self):
        filelist = os.listdir(self.path)
        total_num = len(filelist)

        i = 0
        for item in filelist:
            if item.endswith('.jpg'):
                src = os.path.join(os.path.abspath(self.path), item)
                dst = os.path.join(os.path.abspath(self.path), '0000' + format(str(i), '0>3s') + '.jpg')
                fp = open(src, 'rb')
                im = Image.open(fp)
                fp.close()
                x, y = im.size
                if item.endswith('.jpg') and (x < 10 or y < 10):
                    os.remove(src)
                elif item.endswith('.jpg') and (x >= 10 or y >= 10):
                    os.rename(src, dst)
                    i = i + 1


if __name__ == '__main__':
    newname = Rename_screen()
    newname.r_s()

  

  

posted @ 2019-12-02 09:52  千里梦江山  阅读(768)  评论(0)    收藏  举报