‘’’
if mode == ‘partial’:
new_frame.paste(last_frame)
new_frame.paste(im, (0, 0), im.convert(‘RGBA’))
new_frame.save(temp_path + ‘/%s-%d.png’ % (‘’.join(os.path.basename(gif_path).split(‘.’)[:-1]), i), ‘PNG’)
i += 1
last_frame = new_frame
im.seek(im.tell() + 1)
except EOFError:
# print(‘产生EOFError!!!’)
pass
另外,我们下载的 GIF 动画的静态帧图片分辨率大概率是不一致的,所以对图片批量修改分辨率「修改分辨率」变的很有必要。
这里将所有图片的分辨率统一修改为 720*1080,在转换的过程中,如果存在空白部分,就使用黑色进行填充。
def resize_image(target_image_path, target_size):
“”"
调整图片大小,缺失的部分用黑色填充
:param target_image_path: 图片路径
:param target_size: 分辨率大小
:return:
“”"
image = Image.open(target_image_path)
iw, ih = image.size # 原始图像的尺寸
w, h = target_size # 目标图像的尺寸
scale = min(w / iw, h / ih) # 转换的最小比例
# 保证长或宽,至少一个符合目标图像的尺寸
nw = int(iw * scale)
nh = int(ih * scale)
image = image.resize((nw, nh), Image.BICUBIC) # 缩小图像
# image.show()
new_image = Image.new(‘RGB’, target_size, (0, 0, 0, 0)) # 生成黑色图像
# // 为整数除法,计算图像的位置
new_image.paste(image, ((w - nw) // 2, (h - nh) // 2)) # 将图像填充为中间图像&#x