Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix: error in sending sticker to wechat #138

Closed
wants to merge 11 commits into from
Closed

Fix: error in sending sticker to wechat #138

wants to merge 11 commits into from

Conversation

Ovler-Young
Copy link

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.

WeChat error message image

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:

Transparency loss image

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.

Transparent GIF image

There are still some remaining tasks:

  • Some TGS stickers still raise error -1
  • Non-WEBM stickers still have transparency issues
  • Windows

I will merge this pull request once these TODOs are complete.


在微信发表情贴图经常会出错,错误信息如下,也有别人反馈

微信错误信息图片

这类型错误主要是因为微信对表情贴图的GIF文件大小有1M的限制。这个PR中我主要是通过降低GIF的帧率和图片大小来缩小文件,来尽可能避免这种错误。

在研究GIF大小限制的时候,我还发现发送表情经常会丢失透明背景,而变成黑色背景。即使原图有透明背景,到了微信也会变成不透明的:

透明度丢失图片

为了解决这个问题,我试着让GIF保留透明。经过研究,我使用了正确解码Telegram的WEBM文件,然后保留透明背景生成调色板,再编码成GIF的方法,这样就能保留透明背景,微信也能正常显示:

透明GIF图片

还有一些需要完成的工作:

  • 有些TGS表情贴图还是会报错
  • 非WEBM的表情贴图透明背景问题还没解决
  • Windows下的处理

请求将在TODO完成后合并。

@Ovler-Young Ovler-Young closed this Mar 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant