petpet icon indicating copy to clipboard operation
petpet copied to clipboard

[建议]关于获取动态头像与动图透明背景的建议

Open Huaxidesu opened this issue 1 year ago • 3 comments

希望可以支持获取动态头像,动态图生成可以兼容透明背景

Huaxidesu avatar May 28 '23 13:05 Huaxidesu

Plugin

获取动态头像: Mirai未提供正确的头像URL

https://github.com/mamoe/mirai/issues/1557

Core

GIF支持透明色: 暂未找到合适的实现方式

  1. GIF使用 索引颜色 不支持 alpha颜色通道, 通过索引表示完全透明的颜色, 调色板最大为256色
  2. 将合成后的位图转换为 索引颜色 BufferedImage.TYPE_3BYTE_BGR 后会丢失原有的alpha通道
  3. 为保证转换后带有alpha通道的颜色准确显示, 在转换前的图片底部绘制白色背景 #fff

举例说明:

  • 带有alpha颜色通道的像素显示的实际颜色与图像查看程序的背景颜色有关
  • 丢弃alpha通道会导致「原本半透明的像素变得不透明」
  • 如果仅将 alpha > 0 的像素底部绘制 #fff 背景色, 会导致「在背景色为 #000 的图像查看程序下, 低不透明度与0不透明度像素颜色相差过大」

详见 BaseGifMaker.javaFastAnimatedGifEncoder.java

Dituon avatar May 28 '23 16:05 Dituon

Try v6.0

新增 自动获取正确分辨率的头像

https://github.com/Dituon/petpet/releases/tag/6.0

Dituon avatar Oct 26 '23 16:10 Dituon

下个版本会引入Rust构建的渲染核心,支持处理带有alpha通道的调色板,可以构建透明背景的GIF。

https://github.com/Dituon/petpet-rs

Dituon avatar Nov 23 '23 11:11 Dituon