2015-06-10 19 views
-1

Как преобразовать PNG в GIF, сохраняя прозрачность?Как преобразовать PNG в GIF, сохраняя прозрачность?

Я бы надеялся, что использование метода Assign() будет работать, но оно, похоже, не переносит прозрачность. В GIF он представлен как черный.

png:=TPngImage.Create; 
    try 
     png.LoadFromFile(sFile); 
     // comes from file: png.TransparencyMode; 
     // comes from file: png.Transparent 

     // didn't help: gif.Transparent:=true; 

     gif.Assign(png); 

     // didn't help: gif.Transparent:=true; 

     gif.SaveToFile('e:\tmp\out.gif'); 
    finally 
     png.Free; 
    end; 

Я не нашел способ справиться с этим в Delphi ...

спасибо!

+0

PNG использует альфа-прозрачность. Как вы хотите с этим справиться? –

+0

Я просто хочу, чтобы он выглядел так же, как GIF. –

+6

Ну, это не будет выглядеть одинаково. PNG поддерживает полный цвет RGB с альфа-прозрачностью. GIF имеет 256 цветовых палитр и прозрачность пикселей. Нужно спросить, почему вы предпочитаете использовать такой формат изображения ниже. Это 2015 год! –

ответ

2

Можно передать изображение из PNG в GIF. Однако я не рекомендую вам это делать. Формат GIF значительно менее эффективен, чем PNG. PNG поддерживает цветовые каналы RGBA и частичную прозрачность. GIF использует 256 цветовую палитру и не поддерживает частичную прозрачность.

Существует много доступных библиотек, которые сделают наилучшую из плохой работы и попытаются создать изображение GIF, близкое к PNG-изображению, но информация будет потеряна.

Формат GIF датируется концом 1980-х годов, и время перешло. Он уже давно служит своей цели. PNG современна, способна и хорошо поддерживается. Если это возможно, вы должны переключиться с GIF на PNG.

+0

Не определенно направлен на вас, но это противоречие, когда вы начинаете ссылаться на анимацию: «Формат GIF датируется концом 1980-х» ...но мы все еще используем GIF для анимации, и наши разработчики браузеров слишком упрямы и конфликтуют, чтобы согласиться на что-либо еще. – oldmud0

+0

@ oldmud0 Хорошо, я не думал об анимационных GIF, когда писал это. Это справедливый вопрос. Я не думаю, что мы слишком далеко от возможности использовать видео в формате HTML5 в этом пространстве. –

+0

Он уже используется для некоторых более длинных анимаций, где lossy is fine (WebM), но если вам не нужны потери (или ваши изображения очень маленькие), в GIF действительно нет замены, которая имеет только 1-битную прозрачность. – oldmud0

Смежные вопросы