Python 图片格式的转换和尺寸修改

import cv2
import os
import numpy as np
from PIL import Image
import shutil
import sys

image_size=144
#改变之后的图片尺寸

source_path=os.getcwd()+"/image/"#等待转换的图片存放地址
types='png' #转换后的图片格式
target_path=os.getcwd()+"/changepng/"#转换过格式的图片存放地址
final_path=os.getcwd()+"/final/"转换过格式和尺寸的图片存放地址

#如果没有转换后的图片存放文件夹,就创建对应的文件夹
if not os.path.exists(target_path):
    os.makedirs(target_path)
if not os.path.exists(final_path):
    os.makedirs(final_path)

#转变图片格式的函数
def changepng(source_path,types):
    files = []
    image_list=os.listdir(source_path)
    #print(image_list)
    files = [os.path.join(source_path,_) for _ in image_list]
    for index,jpg in enumerate(files):
        if index > 1000:
            break
        try:
            sys.stdout.write('\r>>Converting image %d/100000 ' % (index))
            sys.stdout.flush()
            im = Image.open(jpg)
            png = os.path.splitext(jpg)[0] + "." + types
            im.save(png)
            shutil.move(png,target_path)
        except IOError as e:
            print('could not read:',jpg)
            print('error:',e)
            print('skip it\n')
    sys.stdout.write('Convert Over!\n')
    sys.stdout.flush()

#转化图片尺寸的函数
def changesize(source_path):
    image_lists=os.listdir(source_path)
    i=0
    for file in image_lists:
        i=i+1
        print(os.getcwd()+"/"+file)
        split=os.path.splitext(file)
        filename,type=split
        image_file = source_path+file
        image_source=cv2.imdecode(np.fromfile(image_file,dtype=np.uint8),cv2.IMREAD_UNCHANGED)
        image = cv2.resize(image_source, (image_size, image_size))
        cv2.imencode('.png',image)[1].tofile(final_path+file)


changepng(source_path,types)
changesize(target_path)

 

posted @ 2019-04-16 15:04  菜鸟的一天  阅读(9083)  评论(0编辑  收藏  举报