Копирование PNG с прозрачностью из браузера показывает черный фон

Когда я копирую изображение PNG с прозрачностью в буфер обмена, а затем вставляю его в Photoshop, Paint и т. Д., Прозрачность становится черной.

Есть ли обходной путь для этого? Это проблема браузера, проблема приложения или проблема ОС с буфером обмена?

Я использую Windows 7 и протестирован с последними версиями Chrome и Internet Explorer.

8 ответов

Решение

Copy-Paste не поддерживает прозрачность. Попробуйте сохранить файл и затем использовать Open File в фотошопе. AFAIK, у Paint нет возможности сохранять png-файлы с включенной прозрачностью.

Публикация комментария Dan Lugg в качестве ответа, так как это наиболее удобно для Windows, ИМХО:

  1. Щелкните правой кнопкой мыши на изображение и Copy Image URL из браузера.
  2. В фотошопе выбираем 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+. Нажмите на небольшой предварительный просмотр альфа-канала, чтобы выбрать его, а затем создайте маску на слое с черным фоном из выделения. (Тогда вы можете удалить альфа-канал)

Другие вопросы по тегам