Python3图片webp、JPEG、png格式互换

GIF制作遇到不支持webp格式图片,需要把比较多的webp图片转换jpeg格式,自己用python学着写了代码批量转换,日常难得遇到这样的情况,做个笔记。

批量webp转jpg,反转只要修改相应代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import os
from pil import image
# 图像预处理包括修改图像格式、编号
class proimage():
def \_\_init\_\_(self):
# 指定文件夹路径
self.path = "/users/## #/desktop/1"
# 读取文件夹下图像
def read(self):
filelist = os.listdir(self.path)
return filelist
def webp2jpg(self, filelist):
# 查找图像方式不同,该函数只查找所有.webp格式的文件
for item in filelist:
if item.endswith('.webp'):
src = os.path.join(os.path.abspath(self.path), item)
print("src=", src)
im = image.open(src)
im.load()
save\_name = src.replace('webp', 'jpg')
im.save('{}'.format(save\_name), 'jpeg')
# 删除源图像
# os.remove(src)
if \_\_name\_\_ == '\_\_main\_\_':
newtype = proimage()
filelist = newtype.read()
newtype.webp2jpg(filelist)

4通道png图片转jpg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import os
from pil import image
class proimage():
def \_\_init\_\_(self):
self.path = "/users/## #/desktop/1"
def read(self):
filelist = os.listdir(self.path)
return filelist
def png2jpg(self, filelist):
for item in filelist:
if item.endswith(".png"):
src = os.path.join(os.path.abspath(self.path), item)
im = image.open(src)
im.load()
# print("原图像通道数='{}'".format(len(im.split())))
r, g, b, a= im.split()
im = image.merge("rgb", (r, g, b))
# print('现图像通道数=',len(im.split()))
save\_name = src.replace("png", "jpg")
im.save('{}'.format(save\_name), 'jpeg')
os.remove(src)
if \_\_name\_\_ == '\_\_main\_\_':
newtype = proimage()
filelist=newtype.read()
newtype.png2jpg(filelist)

批量图片重新编号命名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import os
from pil import image
class proimage():
def \_\_init\_\_(self):
# 指定文件夹路径
self.path = "/users/## #/desktop/2"
# 读取文件夹下图像
def read(self):
filelist = os.listdir(self.path)
return filelist
def rename(self, filelist):
i = 1
for item in filelist:
# 查找指定格式图片,例子是查找jpeg格式图片,按需自己更改。
if item.endswith('.jpg') or item.endswith('.jpeg') or item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item)
# 指定编号命名格式
dst = os.path.join(os.path.abspath(self.path), '0' + format(str(i) + '爱尔兰', '0>3s') + '.jpg')
os.rename(src, dst)
# print('converting %s to %s ...' % (src, dst))
i = i + 1
if \_\_name\_\_ == '\_\_main\_\_':
newtype = proimage()
filelist = newtype.read()
newtype.rename(filelist)