правильный способ преобразования изображений GIF в PNG изображения - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь преобразовать изображения из формата 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 голосов
/ 30 апреля 2018

Это происходит, когда ваш 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 ..
...