我正在尝试将图像从gif格式转换为png格式。我就是这样

 def _gif_to_png(gif_dir, png_dir):
    img_names = tf.gfile.ListDirectory(gif_dir)

     for f in img_names:
    # get the filename without the extension
     basename = os.path.basename(f).split(".")[0]

     im = Image.open(os.path.join(gif_dir,f))
     transparency = im.info['transparency']
     png_file_name = os.path.join(png_dir, basename+'.png')
     im.save(png_file_name, transparency=transparency)
     png_names = tf.gfile.ListDirectory(png_dir)


但是,我收到以下错误消息

 transparency = im.info['transparency']
KeyError: 'transparency'


可能是什么问题,以及如何解决?

最佳答案

当您的GIF不包含透明度时,就会发生这种情况。


  transparency
  透明色指数。如果图像不透明,则忽略此键。
  (http://pillow.readthedocs.io/en/5.1.x/handbook/image-file-formats.html#gif


您如何知道GIF是否包含透明像素?显然,您的做法是-测试该密钥是否存在。您可以用try..except包围它,也可以用

if 'transparency' in im.info.dict():
   .. do stuff ..

10-07 23:12