解决gif 透明度问题

背景:

高清gif本身小影已经可以正常导出,随着app需求的迭代,需要支持导出带透明度的gif,支持gif导出透明度过程遇到了一些问题,本文档就详细介绍解决的过程。

实现过程:

我们gif使用调色盘的方式的,所以刚开始我就看下调色盘的内容,发现256色的alpha 都是0xff,这里我就尝试把alpha 改成0,但是这样出现的现象是

显然这种方式不对的,然后我就开始调查下这个黑色边的原因

通过对ffmpeg gif.c相关源码阅读,以及 gif文件格式的分析,发现我上述做法是存在问题的,其实我应该比较原图的alpha位置,然后在调色盘中预留一个颜色表明是背景的,当原图的alpha 小于128表示完全透明的,其位置索引就是调色盘的透明度的索引,代码如下:

C++
for (MDWord i = 0; i < m_param.dwHeight; i++)
        {
                for (MDWord j = 0; j < m_param.dwWidth; j++)
                {
                        if (pTemp[((dwIndex + j) << 2) + 3] < 128)//原图BGRA,所以判断alpha的值
                        {
                                pAdjust[dwIndex + j] = 255;//255就是背景色的索引
                        }
                }
                dwIndex += m_param.dwWidth;
        }

这样出来的gif图就是带透明度的了

不仅清晰度可以,而且透明度也能很好的保留

解决gif 透明度问题相关推荐

  1. unity2d 投影_unity2D解决阴影透明度叠加的问题

    前言 添加阴影是中提高画面质感有效的方式. 之前在自己的2D游戏里面添加阴影有时候遇到这样的问题,半透明的阴影重叠起来之后透明度也叠加了. 这并不是我想到要的效果. 我希望的重叠的阴影透明度保持统一. ...

  2. 将Android布局转成图片,并保存到本地(解决JPEG图片因透明度变黑问题)

    最新碰到个需求,就是将布局转成图片导出,后来想到可以用view.draw(canvas)方法,将布局转为图片. 将布局转为bitmap public Bitmap getBitmap(View vie ...

  3. 加密货币交易所需要怎样的透明度? |链捕手

    在加密货币交易市场,透明度仍然是个相当稀缺的事物.同时,透明度极差越来越成为交易所行业合规化.规范化的主要障碍之一,许多交易所都利用其中的灰色地带诱导投资者做出错误判断,进而籍此大肆牟利,这也是主流金 ...

  4. 400名微软员工主动曝光薪资:28万元到228万元不等!

    作者 | Dave Gershgorn 译者 | 弯月,编辑 | 郭芮 来源 | CSDN(ID:CSDNnews) [导读]近日,近400名微软员工分享了他们的薪酬(从4万美元到32万美元不等,约为 ...

  5. android 微信分享gif图,android后台动态创建图片并实现微信分享

    今天就记录一下. 先说明一下,之前没有做过类似的东西,百度了一两天才知道,说来很惭愧.有点笨,只能这样说. 在我的脑里只明白,如果要动态创建图片: 一.就是new 嘛 二.就是LayoutInflat ...

  6. 计算机图像类型ppt,计算机图像处理.ppt

    <计算机图像处理.ppt>由会员分享,可在线阅读,更多相关<计算机图像处理.ppt(27页珍藏版)>请在人人文库网上搜索. 1.掩膜版,计算机图像处理技术Photoshop,平 ...

  7. 区块链技术及其在信息安全领域的研究进展 简单概括

    一.摘要部分 区块链是一种源于数字加密货币比特币的分布式总账技术,其发展引起了产业界与学术界的广泛关注. 区块链具有去中心化.去信任.匿名.数据不可篡改等优势,突破了传统基于中心式技术的局限,具有广阔 ...

  8. 当你的游戏道具,被做成了生意......

    如果要盘点去年以来的科技界年度热词,元宇宙和链游一定入选. 2021年3月,美国一家以元宇宙为理念的区块链沙盒游戏平台Roblox上市,市值一度超过400亿美金,一下子让整个资本圈打了个鸡血.因为在此 ...

  9. 【AI测试】人工智能测试整体介绍——第二部分

    主要内容是 第一部分:人工智能和测试的介绍 第二部分:人工智能系统的特性和验收标准 第三部分:机器学习 第四部分:机器学习的性能指标和基准 第五部分:人工智能系统测试简介 第六部分:人工智能系统的黑盒 ...

最新文章

  1. 微软亚洲研究院:“网络结构搜索和设计”论文分享专场
  2. “数据库审计”关键词,重回Google第一位置
  3. delphi ui编辑工具源码_一种无侵入比swagger-ui兼容性更好更简单的API文档生成方案
  4. Intellj idea启动tomcat配置
  5. unity3d所要知道的基础知识体系大纲,可以对照着学习,不定期更新
  6. mysql 密码1045_mysql登录1045错误时 修改登录密码
  7. C Primer Plus 第7章 C控制语句:分支和跳转 7.4 一个统计字数的程序
  8. 对比三菱, 横河PLC快速入门 第一章
  9. 代码炼金术·02集·卓越程序员磨刀不误砍柴工--快速学习能力
  10. 职场上做“独狼”注定失败
  11. 耐磨钢球磨耗计算方法
  12. 群英传内推第001期
  13. 最大m子段和总结与例题 51nod1052 HDU1024
  14. SQL学习之now()函数
  15. “读芯术”精华文章汇总:专业知识
  16. onedrive 配置 教你如何获取5T windows资源存储空间和提高数据同步速度
  17. Layaverse掌舵人谢成鸿在上海静安国际设计节的主题分享
  18. 怎么做GIF动画?怎样将图片合成gif动图
  19. 现在捡芝麻都需要有见识吗?
  20. 奇文共欣赏 疑义相与析

热门文章

  1. linux定时任务提示没权限,Linux添加定时任务提示权限不够
  2. 为什么iPhone拍照更好看
  3. 【无标题】Contest1926 - 1112 高2022
  4. 国产Linux系统deepin使用感受
  5. 为什么new对象以后要交给spring呢?
  6. 自己写的免费的pdf拆分工具
  7. java 正负循环_为什么递增Java int最终导致负数?
  8. 煮完饺子,汤用不用留?- 从小事看应用开发的细节
  9. ROS aubo i5 noetic版本 机械臂 Ubuntu 20.04
  10. 击败一半参赛程序员,DeepMind 重磅推出 AlphaCode