为什么当我将具有透明背景的 PNG 文件复制/粘贴到 Photoshop 中时,它们会显示黑色背景,而如果我保存它们,然后打开它们则是透明的?
我发现复制时不太可能省略 alpha 通道。
答案1
为什么当我将具有透明背景的 PNG 文件复制/粘贴到 Photoshop 中时,它们会显示为黑色背景,而如果我保存它们,然后打开它们,它们又是透明的?我发现复制时不太可能会忽略 alpha 通道。
抽象的
复制和粘贴有两个部分:源和目标。复制和粘贴时会发生什么取决于两个都側面。
复制 PNG/透明图像
复制 PNG 时,您可以通过多种方式进行复制。
您可以复制实际.png
文件,在这种情况下,文件的文件名和路径将被复制到剪贴板。在这种情况下,当您粘贴时,接收程序必须能够理解这种特定的剪贴板格式并打开其中包含的文件名。在这种情况下,它应该与使用命令没有什么不同File->Open
。
另一方面,如果您在编辑器/查看器中打开图片并复制图片的实际像素,那么这取决于编辑器/查看器:
如果它仅复制颜色数据,则接收程序将仅显示颜色数据包含的内容,对于具有透明度的图像,其透明区域可能包含黑色或其他颜色。
如果编辑器/查看器仅复制渲染的像素,则接收程序将粘贴最终图像,其中透明区域显示复制时编辑器/查看器中设置的背景颜色。
如果编辑器/查看器复制了颜色数据以及透明度数据,则接收程序将按预期粘贴图像并具有正确的透明度。
使用图标编辑器时,您可以看到这种情况。根据您使用的程序,如果您将具有透明度的图标复制到另一个程序(如 MSPaint),则透明区域可能会出现意外结果。
剪贴板格式
问题是,只有少数标准 剪贴板格式包括文本、文件和位图数据。对于要复制的任何自定义数据,程序必须注册它并将其数据复制到剪贴板。在这种情况下,接收程序必须能够知道自定义格式并能够对其进行解码。标准位图格式适用于平面图像,没有透明度的概念(它是很久以前设计的)。因此,程序必须以自定义格式向剪贴板提供透明图像,虽然有些是常见的,但没有单一的标准格式。有些程序只会将图像复制到平面位图格式,这当然意味着没有透明度信息。
一线希望
好的一面是,程序可以在剪贴板中放置多个项目(不同格式),因此如果编辑器/查看器非常智能,它会以多种格式放置数据的副本(在本例中是透明图像),然后由接收程序使用具有最多信息的最佳版本。
例如,当您复制文件或文件夹时,它们在 XP 中至少以四种格式复制,在 7 中则更多(还会复制一些其他数据,但我指的是实际的文件名/路径)。其中一些更有用,因为它们包含有关复制文件的数据,而一些则更简单,仅包含第一个文件的纯文本名称。
复制透明图像也是如此。程序可以将简单、平面、渲染的图像放置在剪贴板的位图格式中,可以包含自定义透明度格式中的透明度信息,以及将图像的原始副本及其所有数据(包括透明度、图层等)放置在另一种自定义格式中。
当然,就像我说的,接收方必须能够理解和使用最佳版本,否则最终可能会使用简单、老式、向后兼容的标准副本。
答案2
必须有一个渲染过程才能通过 png 的透明部分显示某些内容。复制图像时,只有该渲染过程的最终结果会以 (0,0,0) RGB 或黑色发送到剪贴板。