下面直接给出转换代码png2jpg.py文件,虽然精度可能会有所损失,但是影响不大:
方法一
import os
from PIL import Image
dirname_read="./png/" # 注意后面的斜杠
dirname_write="./jpg/"
names=os.listdir(dirname_read)
count=0
for name in names:
img=Image.open(dirname_read+name)
name=name.split(".")
if name[-1] == "png":
name[-1] = "jpg"
name = str.join(".", name)
#r,g,b,a=img.split()
#img=Image.merge("RGB",(r,g,b))
to_save_path = dirname_write + name
img = img.convert('RGB')
#RGBA意思是红色,绿色,蓝色,Alpha的色彩空间,Alpha指透明度。而JPG不支持透明度,所以#要么丢弃Alpha,要么保存为.png文件
img.save(to_save_path)
count+=1
print(to_save_path, "------conut:",count)
else:
continue
方法二
import os
from skimage import io
def png2jpg(input_path, output_path):
"""
函数功能:将input_path路径下的所有png格式的图像以jpg格式保存至output_path
"""
if not os.path.exists(output_path):
os.makedirs(output_path)
images = os.listdir(input_path)
for i in images:
img = io.imread(os.path.join(input_path, i))
filename = os.path.splitext(i)[0]
io.imsave(output_path+filename+'.jpg', img)
if __name__ == '__main__':
input_path = './dataset/celebA/train_png/'
output_path = './dataset/celebA/train_jpg/'
png2jpg(input_path, output_path)
-
错误1 :cannot import name '_validate_lengths' from 'numpy.lib.arraypad'
解决方法:pip install --upgrade scikit-image
-
错误2 :JPEG does not support alpha channel.