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

48

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

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

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

Райан Элкинс
источник
1
Пожалуйста, дополните. Что именно вы копируете? .pngФайл или его растровый , пока он будет открыт в редакторе / зрителя? Если это файл, то Photoshop (должен) сможет правильно открыть файл, прозрачность и все. Если это фактические пиксели изображения, то это зависит от исходной программы и от того, помещает ли она данные прозрачности в буфер обмена или нет.
Synetech
Вроде как зависит от ОС. Кажется, что буфер обмена не может содержать полупрозрачные изображения, но некоторые браузеры вместо этого сохраняют ссылку на изображение - при вставке прозрачность остается неизменной.
Томаш Зато
Если вы открываете файл .png с прозрачностью в MS Paint (Windows 10) или Firefox 60.0.2, фон отображается белым цветом. Если вы открываете тот же файл в IrfanView или Chrome 67.0.3396.87, фон отображается черным. Если вы откроете тот же файл в Paint.NET, фон будет отображаться в виде серо-белой шахматной доски. Если вы откроете его с помощью Paint 3D, фон будет отображаться как бежевый. Если вы копируете из MS Paint, фон становится непрозрачным белым. Если вы копируете из Paint.NET, прозрачный фон сохраняется в буфере обмена Win10, поэтому все зависит от того, в какую программу вы его вставили.
Дэйв Бертон

Ответы:

30

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

Гани Симсек
источник
4
Да, это то, что я делаю. Я просто надеялся, что есть какой-то другой способ обойти это.
Райан Элкинс
2
@Ryan FWIW, это на самом деле, похоже, ошибка на стороне Photoshop. Он работает в Paint.net, когда копируется из IE, FF или Chrome. Я подумал, что, возможно, обходной путь будет «Вставить в Paint.net, выбрать все, скопировать, вставить в Photoshop», но это не сработает - вы получаете изображение на белом, а не на черном, но все же без прозрачности.
Кип
9
Просто записка; Вы можете открыть URL в Photoshop, сохранив промежуточный шаг; Windows ( я уверен, что другие ОС будут делать то же самое ) загрузит его в локальный временный файл и откроет. Это ( я только что заметил ) сохраняет прозрачность.
Дэн Лугг
> Copy-Paste не поддерживает прозрачность. Это зависит от источника данных буфера обмена.
Synetech
Если вставить в PowerPoint / Word, прозрачность будет сохранена.
Сяо Пэн - ZenUML.com
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 X и Windows я могу скопировать изображение PNG с прозрачностью из Chrome (а также Safari в OS X) и вставить его в Illustrator или другие приложения и сохранить прозрачность. Виноват только фотошоп.

оборота Фрогз
источник
Это гений, я не знал, что Photoshop можно открыть прямо с URL! Хорошая находка!
Doggie52
1
Эта опция не доступна для OSX. Кто-нибудь знает?
Кристина Купер
@ChristineCooper Лучший вариант, который я знаю для OS X, - это загрузить изображение, затем открыть, а затем удалить оригинал. Это так же просто, как перетаскивание изображения в папку или на рабочий стол (который сохраняется в виде файла), затем перетаскивание этого файла в Photoshop в Dock или в открытый документ Photoshop. Я протестировал множество вариантов, используя как Chrome, так и Safari вместе с Photoshop CS6, и я не могу найти лучшего способа или способа использования буфера обмена.
Phrogz
Да, я пытаюсь избежать опции загрузки и открытия и хочу существенно сократить количество шагов. Перетаскивание тоже не работает. Надеемся, что в будущем пользователи OSX смогут вставлять URL-адреса в Photoshop. Благодарность!
Кристина Купер
Это не проблема Photoshop. Проблема в том, что формат буфера обмена, используемый любыми копиями, на самом деле не определяется как альфа-совместимый. Фотошоп просто следует спецификациям правильно.
Nyerguds
3

Попробуйте это: скопируйте прозрачное изображение, вставьте в MS Word. Затем скопируйте его (или перетащите) из слова и вставьте в другую целевую программу.

Я обнаружил, что вставка в Visio из Chrome становится черной, но работает правильно в Word, а затем скопирована из Word, она вставляется правильно и прозрачно в Visio.

JamieRI
источник
не делай этого! Вы теряете прозрачный фон!
Андрей Красуцкий
Не уверен, почему вы говорите мне не делать этого, это то, что я делаю, чтобы сохранить прозрачность при использовании Visio. Я также использую Word, чтобы добавить прозрачность (установить цвет фона и / или удалить фоновые объекты), когда это не было изображение с прозрачностью.
JamieRI
1

Я сделал обходной путь, который решает проблему. Запуск моего сценария после копирования PNG позволяет вставить изображение из Chrome в Photoshop, Paint и т. Д. С прозрачностью в такте.

Программа + Источник: https://github.com/skoshy/CopyTransparentImages/releases

Если у вас возникнут какие-либо проблемы, сообщите мне об этом здесь или на Github!

Стив
источник
Я был бы заинтересован в деталях по этому вопросу. Что делает ваш код? Что ожидает Photoshop за прозрачность, которой нет в данных буфера обмена?
Phrogz
0

Вы можете просто перетащить изображение из браузера в Photoshop или любую другую программу, которая будет правильно обрабатывать файл PNG.

боб
источник
1
Звучит как хорошее предложение, но это не работает между Chrome и Photoshop CC на Windows 7x64. [+]Курсор показывает на цели Photoshop, но изображение не открывается в результате.
Phrogz
0

Я просто потратил много времени на изучение этого. Я использовал Photoshop для копирования полупрозрачных текстур в течение некоторого времени во время создания прототипа (с назначением Axure RP).

Теперь я попытался использовать новый API буфера обмена в html 5. Я проанализировал файлы PNG, сгенерированные этим процессом.

Если я использую буфер обмена (с прямоугольным выделением) для копирования полупрозрачной текстуры в браузер с помощью API буфера обмена, он устанавливает альфа-байт в FF (полностью непрозрачный).

Если я использую API-интерфейс перетаскивания для копирования файла PNG 24 «Сохранить как Интернет» в браузер, он работает так, как ожидается, и прозрачные пиксели работают (и альфа-байт не принудительно передается в FF).

Примечание. Даже несмотря на то, что Photoshop говорит, что он 24-битный, он фактически экспортирует его как 8-битный (подтверждено).

Homer6
источник
0

Для всех, кто интересуется, если вы получаете черный цвет фона скопированного файла PNG даже при открытии его вручную, попробуйте проверить, нет ли альфа-канала.

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

Хитрость, когда он находится в альфа-канале, состоит в том, чтобы просто нажать CTRL +. Нажмите на небольшой предварительный просмотр альфа-канала, чтобы выбрать его, а затем создайте маску на слое с черным фоном из выделения. (Тогда вы можете удалить альфа-канал)

CMaxo
источник
0

Таким образом, я сыт по горло этим раздражением и сделал обходной путь.

Есть две части к этому:

  • Крошечная утилита, которую я написал, чтобы сохранить изображение буфера обмена в файл .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
Ежик
источник