forked from ehForwarderBot/efb-telegram-master
-
Notifications
You must be signed in to change notification settings - Fork 0
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 some transparency issue ontelegram stickers #2
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
在经历了上面的更改后,认为将压缩gif部分放至微信的slave较好,将在本branch中移除压缩gif部分,并将fork微信slave后重开pr;但透明背景的部分代码仍然保留。 |
Ovler-Young
changed the title
Compress gif for wechat
Fix some transparency issue ontelegram stickers
Mar 6, 2024
In this PR I've fixed the transparency issue on two kinds of telegram sticker, one for tgs stickers and one for video stickers. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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完成后合并。