# -*- coding: utf-8 -*-
from PCV.tools.imtools import get_imlist #导入原书的PCV模块
from PIL import Image
import os
import pickle
filelist = get_imlist('C:/PythonWorkSpace/pic/') #获取convert_images_format_test文件夹下的图片文件名(包括后缀名)
print(filelist)
imlist = open('C:/PythonWorkSpace/pic/imlist.txt','wb') #将获取的图片文件列表保存到imlist.txt中
pickle.dump(filelist,imlist,0) #序列化
imlist.close()
for infile in filelist:
outfile = os.path.splitext(infile)[0] + ".png" #分离文件名与扩展名
if infile != outfile:
try:
Image.open(infile).save(outfile)
except IOError:
print ("cannot convert", infile)
我是对比2个链接进行修改的,运行以后有乱码出现,问题原因找到啦,(改为:pickle.dump(filelist,imlist,0) #序列化)其中,模块定义:1/ pickle.dump(obj, file, [,protocol])
注解:将对象obj保存到文件file中去。
protocol为序列化使用的协议版本,0:ASCII协议,所序列化的对象使用可打印的ASCII码表示;1:老式的二进制协议;2:2.3版本引入的新二进制协议,较以前的更高效。其中协议0和1兼容老版本的python。protocol默认值为0。
file:对象保存到的类文件对象。file必须有write()接口, file可以是一个以'w'方式打开的文件或者一个StringIO对象或者其他任何实现write()接口的对象。如果protocol>=1,文件对象需要是二进制模式打开的。2/ os.path.splitext(path)>>> os.path.splitext('c:\csv\test.csv') ('c:\csv\test', '.csv') 3/ Image.open(infile).save(outfile)
PIL 的 open() 函数用于创建 PIL 图像对象,save() 方法用于保存图像到具有指定文件名的文件。