Qwen-Image-2.1透明图不是棋盘格:保存错格式就会丢Alpha

|作者: QUASA 编辑团队|2 分钟阅读
Qwen-Image-2.1透明图不是棋盘格:保存错格式就会丢Alpha

Qwen-Image-2.1 能按提示词生成和编辑透明图像。要得到可叠放的透明 PNG,在提示词中写明独立主体、背景完全透明,再让输出保持 RGBA 并保存为 PNG;交付前重新打开文件,确认主体外确有透明像素。

灰白棋盘格可能只是预览透明区域的底纹,也可能已被画进图像。在DiffSynth 的模型文档所述流程中,RGBA 的第四通道承载 Alpha,转成 RGB 或保存为 JPG 会丢失透明度;之后重新改存 PNG,也不会自动找回已丢失的通道。

提示词:把透明要求写成素材要求

只写“白底”“纯色背景”,通常是在要求可见的背景颜色,不等于要求背景像素透明。提示词应先说明主体,再限定画布其余区域:这是带 Alpha 通道的 RGBA 素材,主体之外完全透明,没有场景、地面和装饰底纹。DiffSynth 流程没有单独的 Alpha 开关,透明程度由模型根据提示词生成,因此提示词是起点,成品像素仍需检查。

贴纸可直接从这段示例改写:“这是一张带透明度的 RGBA 图像。一只完整的卡通小猫贴纸,轮廓清楚,边缘干净;图像具有 Alpha 通道,背景完全透明,除小猫外没有地面、投影、边框或其他元素。”小猫只是条件示例,换成自己的主体即可。希望保留发丝、薄纱或飘带时,可把“边缘干净”改为“保留自然的半透明边缘”,以免提示词把本来需要的渐变透明压成硬轮廓。

从商品照片提取主体时,描述应指向已有照片:“从输入图像中提取包装主体,保留可见轮廓和包装细节;货架、台面与周围环境移除,输出带 Alpha 的透明背景素材。”界面装饰图则可写:“单个完整图形,主体外侧和内部空隙均透明,不生成场景、画布纹理或矩形底板。”这两段同样是可替换的示例,能表达目标,却不能保证每次生成都清除干净。

环境词会改变模型要画的内容。“小猫身上有水珠”把效果放在主体上;“小猫站在雨中的街道”则引入街道与雨景,模型可能填满背景。若用途是贴纸、商品合成或界面叠放,先限定主体与透明区域,再补充主体自身的材质和细节,能减少相互冲突的画面要求。

导出:保住生成结果里的 Alpha

在返回 PIL 图像的 DiffSynth 流程里,生成结果为 RGBA 模式;可以对原图直接执行 image.save("asset.png")。这一步保存的是仍含透明通道的文件。若中途调用 image.convert("RGB"),A 通道便被去掉;随后即使文件名以 .png 结尾,保存的也可能是整张不透明的 RGB PNG。

JPG 用于已有固定背景的展示图可以,但它不承载 Alpha。把透明素材叠在白底、商品照片或界面画面上,再压平导出 JPG,得到的是合成后的成品,无法像素材母版一样换底。制作这种展示图前应保留原始透明 PNG;需要另一个底色时,从母版重新合成,而不是从 JPG 反向寻找透明轮廓。

PNG 也只是容器选择,不是透明度证明:没有透明像素的图片照样能保存为 PNG。编辑过程中填充背景、合并到不透明底层或把预览棋盘格截图,都会让最终文件与原始 RGBA 不同。最有效的检查点是导出后的文件,因为生成窗口、编辑画布与交付文件可能显示相似,像素却已改变。

目视验真:棋盘格会不会跟着图片走

把最终 PNG 分别放在深色和浅色背景上,观察主体外侧与主体内部的空隙。真正透明的区域会露出当前底色;半透明的边缘会随底色改变明暗。如果灰白方块始终固定在图案周围,像一块矩形纸片遮住底层,它们就是文件中的可见像素,而非阅读软件临时显示的透明底纹。

只看画布四角容易漏检。贴纸的耳朵之间、飘带围出的孔洞,或商品包装提手的开口,都应露出下方背景;有些图片四周已经透明,内部空隙仍留着白底。还要看主体轮廓是否残留浅色边缘:在白底上不明显的晕圈,换到深底后往往会暴露,影响合成效果。

反过来,预览窗口出现棋盘格也不能直接判错。有些编辑器用它显示透明像素,导出后不会带进文件;有些图片则把棋盘格本身当作背景图案。判断两者的关键是检查重新打开的成品,而不是记住生成时预览图的外观。

像素验真:读取最终文件的通道

需要明确答案时,可用 Pillow 打开实际交付的 PNG,而非内存中的生成对象。Pillow 的Image 接口提供 getbands()、getchannel() 和 getextrema():在常见的八位 RGBA 图像里,Alpha 极值为 (255, 255) 意味着所有像素均不透明,0 则表示完全透明的像素值。

  1. 读取文件并记下原始模式:from PIL import Image; im = Image.open("asset.png"); print(im.mode, im.getbands())。
  2. 统一提取 Alpha,再看极值:alpha = im.convert("RGBA").getchannel("A"); print(alpha.getextrema())。
  3. 若要核对某个角落,可读取该位置的 Alpha:print(alpha.getpixel((0, 0)))。在主体内部的空隙也选取相应位置读取,避免只靠全图极值作判断。

结果为 (255, 255),说明整张图没有透明像素;最小值低于 255,只说明至少有一处透明或半透明,不能保证主体周围都已清空。对一张期望轮廓外完全透明的素材,查看角落、镂空位置与边缘,比单独看到 A 通道更有用。一个文件即使是 RGBA,也可以让全部 Alpha 值保持不透明。

调色板模式 PNG 可能以透明度信息保存透明区域,原始 getbands() 未必直接列出 A,所以要先记录原始模式,再转换为 RGBA 读取有效透明度。反之,普通 RGB 图像执行 convert("RGBA") 只是补上不透明的 A,不会替图片抠除白底或画进去的棋盘格。若两次检查的结果不同,应分别核对生成原图和最终导出文件,定位透明度在哪一步丢失。

贴纸、商品素材与界面资产如何交付

贴纸重点看外轮廓和镂空位置。完整的主体若带着一圈残余底色,贴到深色包装或网页上会显出边框;内部空隙不透明,则会盖住排版内容。原图已有残留时,应调整提示词或重新生成;原图透明、交付图不透明时,应回查图层合并和导出格式。

商品素材要把包装边缘、提手孔洞和与原照片背景颜色相近的部分一并检查。浅色物体在浅色预览底板上可能掩盖残留,把成品叠到深色底板再看,能更快发现白边。界面资产则应放到实际使用的浅色与深色界面里,确认细线、柔光和半透明区域仍能按预期显示。

保留一份经过像素检查的透明 PNG 母版,再从母版制作带底色的 JPG 或其他展示版本。交付需要继续叠放的文件时,确认最终 PNG 仍含有效透明像素;交付固定背景画面时,则明确它是压平后的展示图。这样素材与成品各有用途,后续换底也有可用的起点。

相关阅读:

分享:

订阅我们的新闻通讯

将最新 Web3、AI 和加密货币新闻直接发送到您的邮箱。

0