Копирование PNG с прозрачностью из браузера показывает черный фон
Когда я копирую изображение PNG с прозрачностью в буфер обмена, а затем вставляю его в Photoshop, Paint и т. Д., Прозрачность становится черной.
Есть ли обходной путь для этого? Это проблема браузера, проблема приложения или проблема ОС с буфером обмена?
Я использую Windows 7 и протестирован с последними версиями Chrome и Internet Explorer.
8 ответов
Copy-Paste не поддерживает прозрачность. Попробуйте сохранить файл и затем использовать Open File
в фотошопе.
AFAIK, у Paint нет возможности сохранять png-файлы с включенной прозрачностью.
Публикация комментария Dan Lugg в качестве ответа, так как это наиболее удобно для Windows, ИМХО:
- Щелкните правой кнопкой мыши на изображение и
Copy Image URL
из браузера. - В фотошопе выбираем
File->Open
(ctrl-o) и вставьте URL в часть имени файла диалога.- Photoshop / Windows загрузит URL-адрес во временный файл и откроет его.
Для OS X нет никакого поля в Открытом диалоге Файла / Листе, где можно было бы вставить URI. Вместо этого вы должны загрузить файл и открыть его (например, перетащить из браузера на рабочий стол, затем перетащить новый файл в Dock или в документ Photoshop), а затем удалить временный файл.
FWIW, это, кажется, проблема Photoshop, а не проблема браузера или ОС. В OS X и Windows я могу скопировать изображение PNG с прозрачностью из Chrome (а также Safari в OS X) и вставить его в Illustrator или другие приложения и сохранить прозрачность. Виноват только фотошоп.
Попробуйте это: скопируйте прозрачное изображение, вставьте в MS Word. Затем скопируйте его (или перетащите) из слова и вставьте в другую целевую программу.
Я обнаружил, что вставка в Visio из Chrome становится черной, но работает правильно в Word, а затем скопирована из Word, она вставляется правильно и прозрачно в Visio.
Вы можете просто перетащить изображение из браузера в Photoshop или любую другую программу, которая будет правильно обрабатывать файл PNG.
Таким образом, я сыт по горло этим раздражением и сделал обходной путь.
Есть две части к этому:
- Крошечная утилита, которую я написал, чтобы сохранить изображение буфера обмена в файл.png
- Скрипт AutoHotKey
Скрипт AutoHotKey проверяет, активен ли в данный момент Photoshop и, если да, перехватывает Ctrl
+V
сочетание клавиш, а затем запускается утилита.
Если утилита сохранила изображение в %TEMP%\clip.png
, Shift
+Ctrl
+F12
комбинация клавиш отправляется в Photoshop, который я сопоставил с действием Photoshop, чтобы поместить clip.png
файл в текущий открытый документ.
Если утилита не сохранила изображение, стандарт Ctrl
+V
комбинация клавиш отправляется в Photoshop, и выполняется стандартная вставка.
Весь исходный код доступен здесь: https://github.com/SilverEzhik/ClipboardToPNG, а утилиту можно скачать здесь: https://github.com/SilverEzhik/ClipboardToPNG/releases
Чтобы создать действие Photoshop, просто создайте новое действие, указав комбинацию клавиш Shift+Ctrl+F12 (или измените комбинацию в файле сценария), а затем во время записи перейдите к File
> Place Embedded...
и вставить %TEMP%\clip.png
в поле имени файла.
Исходный код для скрипта AHK приведен ниже - если вы ранее не использовали AutoHotKey, установите его, а затем сохраните код в filename.ahk
файл в тот же каталог, что и утилита ClipboardToPNG.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
Я сделал обходной путь, который решает проблему. Запуск моего сценария после копирования PNG позволяет вставить изображение из Chrome в Photoshop, Paint и т. Д. С прозрачностью в такте.
Программа + Источник: https://github.com/skoshy/CopyTransparentImages/releases
Если у вас возникнут какие-либо проблемы, сообщите мне об этом здесь или на Github!
Я просто потратил много времени на изучение этого. Я использовал Photoshop для копирования полупрозрачных текстур в течение некоторого времени во время создания прототипа (с назначением Axure RP).
Теперь я попытался использовать новый API буфера обмена в html 5. Я проанализировал файлы PNG, сгенерированные этим процессом.
Если я использую буфер обмена (с прямоугольным выделением) для копирования полупрозрачной текстуры в браузер с помощью API буфера обмена, он устанавливает альфа-байт в FF (полностью непрозрачный).
Если я использую API-интерфейс перетаскивания для копирования файла PNG 24 "Сохранить как Интернет" в браузер, он работает так, как ожидается, и прозрачные пиксели работают (и альфа-байт не принудительно передается в FF).
Примечание. Даже несмотря на то, что Photoshop говорит, что он 24-битный, он фактически экспортирует его как 8-битный (подтверждено).
Для всех, кто интересуется, если вы получаете черный цвет фона скопированного файла PNG даже при открытии его вручную, попробуйте проверить, нет ли альфа-канала.
Похоже, в зависимости от того, какое программное обеспечение использовалось для создания PNG, прозрачность иногда сохраняется такой же, как и внутри слоев, но в другое время она сохраняется в альфа-канале.
Хитрость, когда он находится в альфа-канале, состоит в том, чтобы просто нажать CTRL+. Нажмите на небольшой предварительный просмотр альфа-канала, чтобы выбрать его, а затем создайте маску на слое с черным фоном из выделения. (Тогда вы можете удалить альфа-канал)