Skip to content

fix(clipboard): 复制图片保留透明通道 - #69

Merged
zlZayn merged 1 commit into
mainfrom
fix/clipboard-keep-alpha
Nov 3, 2026
Merged

zlZayn merged 1 commit into
mainfrom
fix/clipboard-keep-alpha

Conversation

@zlZayn

@zlZayn zlZayn commented Nov 3, 2026

Copy link
Copy Markdown
Collaborator

是的,之前会丢——只写 24 位 CF_DIB,透明背景的 PNG 粘出来透明区是一片黑(透明像素 RGB 通常是 0,转 RGB 等于把 alpha 扔掉)。浏览器旧路径本来就给 PNG + DIB 两种格式,所以这是 #67 引入的功能退化。

修复:剪贴板现在同时写两种格式 —— CF_DIB(24 位,微信/画图/老软件读)+ 注册格式 PNG(源是 PNG 用原字节、其它转 PNG,alpha 完整,Photoshop/Office/浏览器读);DIB 的透明像素改为合成到白底。

实测(写入后回读):格式含 PNG;PNG 透明区 alpha=0、不透明区 255;DIB 透明区为白。

后端 485 用例全过(+3:透明合成白底 / PNG 载荷保 alpha / 非 PNG 转 PNG);ruff、check_docs.py 通过。

只写 24 位 CF_DIB 时 alpha 被整条丢掉:透明背景的 PNG 粘出来透明区是一片黑
(透明像素 RGB 通常是 0,转 RGB 只是把 alpha 扔掉)。浏览器旧的复制路径本来就
同时提供 PNG 与 DIB,所以这属于 #67 引入的功能退化。

- 剪贴板同时写两种格式:CF_DIB(24 位,给微信/画图/老软件)+ 注册格式 PNG
  (源是 PNG 用原字节、其它转 PNG,alpha 完整,给 Photoshop/Office/浏览器)
- DIB 的透明像素改为合成到白底(不再是丢弃后留原 RGB 的黑块)
- 单测:透明合成白底、PNG 载荷原字节直传且 alpha 完好、非 PNG 源转 PNG

实测(写剪贴板后回读):格式含 PNG;PNG 透明区 alpha=0、不透明区 255;
DIB 透明区为白。
@zlZayn
zlZayn merged commit b9680f6 into main Nov 3, 2026
4 checks passed
@zlZayn
zlZayn deleted the fix/clipboard-keep-alpha branch November 3, 2026 11:29
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