将gif图像转换为png图像的正确方法

时间:2018-04-30 18:39:02

标签: python image python-imaging-library pillow

我正在尝试将图像从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'

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

1 个答案:

答案 0 :(得分:2)

当您的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 ..