解决gif 透明度问题
解決gif 透明度問題
背景:
高清gif本身小影已經可以正常導出,隨著app需求的迭代,需要支持導出帶透明度的gif,支持gif導出透明度過程遇到了一些問題,本文檔就詳細介紹解決的過程。
實現過程:
我們gif使用調色盤的方式的,所以剛開始我就看下調色盤的內容,發現256色的alpha 都是0xff,這里我就嘗試把alpha 改成0,但是這樣出現的現象是
?
?顯然這種方式不對的,然后我就開始調查下這個黑色邊的原因
通過對ffmpeg gif.c相關源碼閱讀,以及 gif文件格式的分析,發現我上述做法是存在問題的,其實我應該比較原圖的alpha位置,然后在調色盤中預留一個顏色表明是背景的,當原圖的alpha 小于128表示完全透明的,其位置索引就是調色盤的透明度的索引,代碼如下:
| C++ |
這樣出來的gif圖就是帶透明度的了
?
不僅清晰度可以,而且透明度也能很好的保留
總結
以上是生活随笔為你收集整理的解决gif 透明度问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript有效的anagram
- 下一篇: LED的高显指是什么意思?