从浏览器复制具有透明性的PNG会显示黑色背景


47

当我将具有透明度的PNG图像复制到剪贴板,然后将其粘贴到Photoshop,Paint等中时-透明度变为黑色。

有什么解决方法吗?这是剪贴板的浏览器问题,应用程序问题还是操作系统问题?

我使用的是Windows 7,并经过了最新版本的Chrome和Internet Explorer的测试。


1
请详细说明。您到底要复制什么?该.png文件或它的位图,而它在编辑器/浏览器被打开?如果是文件,则Photoshop(应该)能够正确,透明地打开文件。如果是图片的实际像素,则取决于源程序以及是否将透明度数据放入剪贴板。
Synetech

取决于操作系统。剪贴板似乎无法包含半透明的图像,但是某些浏览器却保留了图像链接-粘贴时,其透明度保持不变。
托马什Zato

如果您在MS Paint(Windows 10)或Firefox 60.0.2中打开具有透明性的.png文件,则背景显示为白色。如果您在IrfanView或Chrome 67.0.3396.87中打开相同的文件,则背景显示为黑色。如果您在Paint.NET中打开相同的文件,背景将显示为灰色和白色的棋盘格。如果使用Paint 3D打开它,背景将显示为米色。如果从MS Paint复制,背景将变为不透明的白色。如果从Paint.NET复制透明背景,则将其保留在Win10剪贴板中,因此发生的情况取决于将其粘贴到哪个程序。
戴夫·伯顿

Answers:


30

复制粘贴不保持透明度。尝试保存文件,然后Open File在Photoshop中使用。AFAIK,Paint无法保存启用了透明度的png文件。


4
是的,这就是我要做的。我只是希望周围还有其他方法。
Ryan Elkins'2

2
@ryan FWIW,实际上这似乎是Photoshop方面的错误。从IE,FF或Chrome复制后,它可以在Paint.net中使用。我以为可能的解决方法是“在Paint.net中粘贴,全选,复制,粘贴在Photoshop中”,但这不起作用-您将图像改为白色而不是黑色,但仍然没有透明度。
Kip

9
只是一个音符;您可以在Photoshop中打开URL,从而节省了中间步骤;Windows(我确定其他操作系统也会这样做)会将其下载到本地临时文件中并打开。这(我刚刚观察到)保留了透明性。
Dan Lugg 2012年

>复制粘贴不能保持透明度。 这取决于剪贴板数据的来源。
Synetech

如果粘贴在PowerPoint / Word上,将保持透明。
小鹏-ZenUML.com 2014年

11

@DanLugg发表评论作为答案,因为它对于Windows最为方便,恕我直言:

  1. 右键单击图像,然后Copy Image URL从浏览器中。
  2. 在Photoshop中,选择File->Open(ctrl-o)并将URL粘贴到对话框的文件名部分。
    • Photoshop / Windows将URL下载到一个临时文件中并打开它。

对于OS X,“打开文件”对话框/表单中没有可粘贴URI的字段。相反,您必须下载文件并将其打开(例如,从浏览器拖动到桌面,然后将新文件拖动到Dock或Photoshop文档中),然后删除该临时文件。


FWIW,这似乎是Photoshop问题,而不是浏览器或OS问题。在OS X和Windows上,我都可以从Chrome(以及OS X上的Safari)复制具有透明性的PNG图像,然后将其粘贴到Illustrator或其他应用程序中,并保持透明性。只能归咎于Photoshop。


这真是天才,不知道Photoshop可以直接从URL打开!好发现!
Doggie52

1
此选项似乎不适用于OSX。有谁知道?
克里斯汀·库珀

对于OS X,我知道@ChristineCooper的最佳选择是下载图像,然后打开,然后删除原始图像。就像将图像拖到文件夹或桌面(另存为文件),然后将该文件拖到Dock中的Photoshop或打开的Photoshop文档中一样简单。我已经使用Chrome和Safari以及Photoshop CS6测试了各种选项,但找不到更好的方法或使用剪贴板的方法。
Phrogz

是的,我试图避免下载和打开选项,而是希望从本质上减少步骤。拖放也不起作用。希望OSX用户将来能够将URL粘贴到Photoshop中。谢谢!
克里斯汀·库珀

这不是Photoshop问题。问题在于,无论哪种副本使用的剪贴板格式实际上都未指定为具有Alpha功能。Photoshop只是正确遵循规格。
Nyerguds

2

尝试以下操作:复制透明图像,粘贴到MS Word中。然后将其从单词中复制(或拖放)并粘贴到其他目标程序中。

我发现从Chrome粘贴到Visio的粘贴变成黑色,但在Word中可以正常工作,然后从Word复制,然后正确透明地粘贴到Visio。


不要做!您失去了透明背景!
安德烈·克拉苏斯基

不知道为什么您要告诉我不要这样做,这是我在使用Visio时保持透明度的方法。当它不是具有透明性的图像时,我还使用Word添加透明性(设置背景色和/或“删除背景”功能)。
JamieRI

1

我提出了解决此问题的解决方法。复制PNG后运行脚本,可以将Chrome中的图像粘贴到Photoshop,Paint等中,并保持透明。

程序+来源:https : //github.com/skoshy/CopyTransparentImages/releases

如果您遇到任何问题,请随时在此处或在Github上告诉我!


我会对这方面的细节感兴趣。您的代码做什么?Photoshop期望剪贴板数据中没有的透明性是什么?
Phrogz

0

您可以将图像从浏览器拖动到Photoshop或任何可以正确处理PNG文件的程序。


1
听起来像是个不错的建议,但这在Windows 7x64上的Chrome和Photoshop CC之间不起作用。将[+]光标显示出来的Photoshop的目标,但没有图像被打开的结果。
Phrogz 2014年

0

我只是花了很多时间研究这个问题。我在原型制作时(使用Axure RP的目标)使用Photoshop复制半透明纹理有一段时间。

现在,我尝试使用html 5中的新剪贴板API。我剖析了此过程生成的PNG文件。

如果我使用剪贴板(带有矩形选框)将半透明纹理复制到具有剪贴板API的浏览器中,则会将alpha字节设置为FF(完全不透明)。

如果我使用拖放API将“另存为Web” PNG 24文件复制到浏览器,则该文件将按预期工作,并且透明像素也可以正常工作(并且alpha字节不会强制设置为FF)。

注意:即使以为Photoshop表示它是24位,它实际上仍将其导出为8位(已确认)。


0

对于任何想知道的人,如果即使手动打开文件,在复制的PNG文件上仍会得到黑色背景色,请尝试检查是否没有Alpha通道。

好像取决于使用哪种软件制作PNG一样,有时透明度仍保留在图层中,而另一些时候,透明度保留在alpha通道中。

当它在alpha通道中时,一个技巧就是简单地按住CTRL键并单击alpha通道的小预览以选择它,然后在带有黑色背景的图层上创建遮罩。(然后您可以删除Alpha通道)


0

因此,我厌倦了这种烦恼并做出了解决方法。

它有两部分:

  • 我编写的一个小工具,用于将剪贴板图像保存为.png文件
  • 一个AutoHotkey的脚本

AutoHotKey脚本检查Photoshop当前是否处于活动状态,如果是,则它拦截Ctrl+ V键组合,然后运行该实用程序。

如果该实用程序将图像保存到%TEMP%\clip.png,则Shift+ Ctrl+ F12组合键将发送到Photoshop,我已将其映射到Photoshop Action,以将该clip.png文件放入当前打开的文档中。

如果该实用程序未保存图像,则将标准Ctrl+ V键组合发送到Photoshop并执行标准粘贴。

所有源代码都可以在这里找到:https : //github.com/SilverEzhik/ClipboardToPNG,该实用程序可以在这里下载:https : //github.com/SilverEzhik/ClipboardToPNG/releases

要创建Photoshop Action,只需执行一个新操作,并将其组合键映射到Shift + Ctrl + F12(或在脚本文件中更改组合键),然后在记录时转到File> Place Embedded...,然后%TEMP%\clip.png在文件名字段中粘贴即可。

下面提供了AHK脚本的源代码-如果您以前从未使用过AutoHotKey,请先安装它,然后将代码保存到filename.ahkClipboardToPNG.exe实用程序所在的目录中,然后运行它。

DoPhotoshopPaste() {
    RunWait, %A_ScriptDir%\ClipboardToPNG.exe ; run utility, wait for it to complete
    if (ErrorLevel == 0) { ; if error code is 0
        SendEvent, +^{F12} ; press Shift+Ctrl+F12 to run the designated Photoshop action to paste
    }
    else { 
        SendEvent, ^v ; else, just perform a standard paste.
    }
}

#IfWinActive ahk_exe Photoshop.exe ; only activate this hotkey when photoshop is active
    ^v::DoPhotoshopPaste()
#IfWinActive
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.