文章目录

  • 关于QQ发送透明图像失败
  • 原因探索
  • ~~解决方案~~
  • 解决方案
  • 参考

关于QQ发送透明图像失败

笔者在用QQ发送透明图像时,常遇到图像出现黑底或白底的情况,心生好奇,便探索了一下,在此记录一番。

原因探索

经过上网查阅资料,较为可信的是以下说法:

qq不能识别png格式的图片,因为它不支持alpha通道。

典型的图像处理bug, 原因是 png 和jpeg 压缩算法的差异造成的。 jpeg 不支持透明色,故转换后会随机地变成黑色或者白色。

解决方案

在PS或其他软件里导出成GIF格式的图片就变成透明背景了。

尝试出来了,web靠色值调整到100%

这两种方案我都试了,可能是我PS不太熟练,最终没有成功。
但即使成功,为了一个简单的功能要启用PS什么的。。我还是敬谢不敏。

解决方案

即拿即用

def img2gif(img_path:str, savename = None):'''png转透明背景gif:author: Lian:param img_path: 图片路径:param savename: 保存名称(可选):return:'''import osif not os.path.isfile(img_path):print("wrong file name")exit()from PIL import Imageimg = Image.open(img_path)img.putalpha(255)if not savename:savename = "{}.gif".format(os.path.splitext(img_path)[0])# img.show()img.save(savename, transparency = 0, disposal = 2, loop = 0)
if __name__ == "__main__":import sysif(sys.argv.__len__()<2):print("need arguments")exit()img2gif(*tuple(sys.argv[1:]))

这是经过我的一步步测试,得到的最简程序了。
这个程序参考了以下两位博主的文章

Python用PIL将PNG图像合成gif时如果背景为透明时图像出现重影的解决办法_orange_wrj的博客-CSDN博客

python制作gif动图_PIL生成透明GIF动图_weixin_39973410的博客-CSDN博客

并在此基础上,简化了几个不必要的部分,如参数save_allappend_imagesduration
我查阅了pillow的原文档

disposal

Indicates the way in which the graphic is to be treated after being displayed.

  • 0 - No disposal specified.
  • 1 - Do not dispose.
  • 2 - Restore to background color.
  • 3 - Restore to previous content.

这个disposal参数十分有意思,已知0和1无法生成透明背景,但2和3具体有什么差别呢

disposal

An integer (or list or tuple of integers) specifying the APNG disposal operation to be used for this frame before rendering the next frame. Defaults to 0.

  • 0 (OP_NONE, default) - No disposal is done on this frame before rendering the next frame.
  • 1 (PIL.PngImagePlugin.Disposal.OP_BACKGROUND) - This frame’s modified region is cleared to fully transparent black before rendering the next frame.
  • 2 (OP_PREVIOUS) - This frame’s modified region is reverted to the previous frame’s contents before rendering the next frame.

我参考了png格式saving部分参数的解释,disposal为OP_BACKGROUND时,GIF会在渲染下一帧前使当前帧的修改部分变为完全透明的。。黑色?
disposal为OP_PREVIOUS时,GIF会在渲染下一帧前使当前帧的修改部分变为上一帧的内容。

我认为对于单帧的GIF来说这似乎是无关紧要的,但在测试时我发现,如果不将disposal参数设为2或3,或者不添加loop参数,表面上可以正常生成透明背景GIF,但在回复发出该图像的消息时,它会奇妙地出现白底。

出现这种情况的原因,笔者也不是很清楚,想来是QQ的图像压缩算法导致的,有兴趣的读者可以自行研究,也可以把你的发现告诉我。

另外

手机QQ怎么发透明底的图? - 知乎 (zhihu.com)

在该问题回答中提到的方法,笔者也进行了尝试。
经测试,这种将图片传输到手机,再以原图发送的方法,确实能在电脑端透明显示,但在手机端看来,还是出现了白底。

参考

探索qq发送png透明通道丢失的问题

QQ怎么做透明表情包

怎样将图片背景变透明

qq透明图像问题#13相关推荐

  1. Tencent QQ皮肤图像文件格式Gft转png或bmp源代码

    Tencent QQ皮肤图像文件格式Gft转png或bmp源代码 转载自CSDN,另附Delphi版代码: http://topic.csdn.net/u/20111121/14/E545FC21-4 ...

  2. 【Flutter】Image 组件 ( 内存加载 Placeholder | transparent_image 透明图像插件 )

    文章目录 一.transparent_image 透明图像插件 二.内存加载 Placeholder 三.完整代码示例 四.相关资源 一.transparent_image 透明图像插件 安装 tra ...

  3. OpenCV文档阅读笔记-Imread flags解析与实例(保存透明图像)

    目录 官方解析 博主例子(保存透明图像) 官方解析 Imread flags enum ImreadModel{ IMREAD_UNCHANGED=1,    //读取原图不做任何修改,有alpha通 ...

  4. 用java画企鹅_Fireworks绘制简笔QQ企鹅图像

    这里我们使用Fireworks绘制一幅简笔QQ企鹅图像,这里主要熟悉一下工具箱上椭圆.选择.缩放等工具的使用,看看如何通过它们绘制简单的卡通效果.好了,下面我们一起来学习吧! 绘制过程: (1)新建一 ...

  5. 超科技感的QQ透明立体资料卡PSD源码

    正文: 超科技感的QQ透明立体资料卡PSD源码,我测试了以下可以用的,PSD的源文件,直接用PS打开就可以修改文字了,有兴趣的自行去弄吧. 程序: wwwu.lanzouw.com/iIr5r05hn ...

  6. QQ透明名片在线上传网站源码

    介绍: 最近超流行的QQ透明名片,无需复杂操作,不需要QQ会员,一键就能制作自己的专属名片,超高逼格. 透明名片在线上传网站源码 注意事项 1.名片必须恢复默认  2.图片不能太大,过大可以找个好友发 ...

  7. Vegas如何使用透明图像作遮罩?

    在制作视频时,为了给剪辑的视频添加一个遮罩的效果,我们可能会使用ps,画出形状后填充透明色,然后再导入到vegas中使用.小编认为,这样的做法过于麻烦了.在vegas种,我们可以使用透明图片来制作遮罩 ...

  8. cad打印透明图像背景是白色的

    当你使用CAD软件打印透明图像时,背景颜色默认是白色的.但是,你可以在打印设置中更改背景颜色,例如将其设置为透明或其他颜色.你可以在CAD软件的打印对话框中找到这些设置.

  9. android实现qq表情库,Android编程开发之EditText实现输入QQ表情图像的方法

    本文实例讲述了Android编程开发之EditText实现输入QQ表情图像的方法.分享给大家供大家参考,具体如下: 实现效果如下: 将QQ表情图像放到res下的drawable-hdpi文件夹下: 布 ...

  10. 如何在程序中判断当前的qq空间图像是默认的空间图像------我现在已经不太喜欢严密的东东了

    最近碰到一个问题, 需要在php程序中判断当前的qq空间图像是默认的空间图像, 别跟我说md5. 当时第一直觉觉得不可能,  但这个问题又不得不解决啊. 跟朋友们讨论后, 大家也帮提供了各种各样的点子 ...

最新文章

  1. 如何设计API返回码(错误码)?
  2. fastjson与net.sf.json区别
  3. Nodejs开源项目推荐
  4. Pytorch专题实战——交叉熵损失函数(CrossEntropyLoss )
  5. .Net时间运算 - DateTime类,TimeSpan类
  6. 类库、委托、is/as
  7. RED-Net神经网络
  8. 某知名系统漏洞挖掘与利用思路探索
  9. 《游戏系统设计十一》就这样写个像样的邮件系统,赶紧收藏
  10. Python状况:为什么PyPy是Python的未来?
  11. 杜甫水平最高的10首五律
  12. windows和linux系统云服务器桌面远程连接教程
  13. 达梦数据库兼容Oracle之SQL语法(一)
  14. 使用BS4爬取智联招聘
  15. win2012故障转移mysql集群_Windows 2012 系统搭建高可用故障转移集群
  16. 一招教你如何提高分销平台分账效率
  17. WiFi遇到 无法连接到这个网络 的解决办法记录 ( netsh winsock reset )
  18. suptitle()--matplotlib
  19. 电磁场与电磁波实验 01 - | 位移电流测量及电磁场与电磁波的存在实验
  20. 2022年全国大学生数学建模竞赛E题目-小批量物料生产安排详解+思路+Python代码时序预测模型(三)

热门文章

  1. 不会写代码也可以, 手把手教你制作炫酷生日祝福网页(程序员专属情人节表白网站)
  2. samurai_ii__vengeance(武士二:复仇)无法在android上运行的原因
  3. java格式化数字 NumberFormat及DecimalFormat
  4. Jersey-Main-初步
  5. ping 查看IP——MAC——计算机名
  6. win10系统键盘失灵怎么解决
  7. MATLAB高斯迭代算法,基于MATLAB实现高斯赛德尔迭代潮流计算.pdf
  8. 算法图解第四章笔记与习题(快速排序)
  9. 小米随身wifi的linux驱动,小米随身wifi驱动
  10. Axure rp 9 的汉化破解版