Sending stickers from efb via telegram to WeChat often encounters errors like the one shown below. These errors mostly occur with animated stickers. Other user have such reports too.
After investigating, I found that these errors are likely due to WeChat's limit of 1 MB for GIF files used as stickers. Reducing the frame rate and figure size of the GIF can help reduce the file size, which is the main approach I took.
In the process of researching the GIF size limits, I also discovered that even if a sticker has transparency, this transparency is lost when the sticker is sent to WeChat:
To address this, I tried fixing the transparency issue. After some research, I found that decoding the WEBM files from Telegram correctly and using palettegen with the reserve_transparent flag, then encoding to GIF can retain transparency in a way that WeChat recognizes.
There are still some remaining tasks:
[x] Some TGS stickers still raise error -1
[x] Non-WEBM stickers still have transparency issues
[x] Windows
I will merge this pull request once these TODOs are complete.
Sending stickers from efb via telegram to WeChat often encounters errors like the one shown below. These errors mostly occur with animated stickers. Other user have such reports too.
After investigating, I found that these errors are likely due to WeChat's limit of 1 MB for GIF files used as stickers. Reducing the frame rate and figure size of the GIF can help reduce the file size, which is the main approach I took.
In the process of researching the GIF size limits, I also discovered that even if a sticker has transparency, this transparency is lost when the sticker is sent to WeChat:
To address this, I tried fixing the transparency issue. After some research, I found that decoding the WEBM files from Telegram correctly and using palettegen with the reserve_transparent flag, then encoding to GIF can retain transparency in a way that WeChat recognizes.
There are still some remaining tasks:
I will merge this pull request once these TODOs are complete.
在微信发表情贴图经常会出错,错误信息如下,也有别人反馈
这类型错误主要是因为微信对表情贴图的GIF文件大小有1M的限制。这个PR中我主要是通过降低GIF的帧率和图片大小来缩小文件,来尽可能避免这种错误。
在研究GIF大小限制的时候,我还发现发送表情经常会丢失透明背景,而变成黑色背景。即使原图有透明背景,到了微信也会变成不透明的:
为了解决这个问题,我试着让GIF保留透明。经过研究,我使用了正确解码Telegram的WEBM文件,然后保留透明背景生成调色板,再编码成GIF的方法,这样就能保留透明背景,微信也能正常显示:
还有一些需要完成的工作:
请求将在TODO完成后合并。