61 votes

La copie d'un PNG avec transparence à partir du navigateur affiche un arrière-plan noir à la place.

Lorsque je copie une image PNG avec transparence dans le presse-papiers et que je la colle ensuite dans Photoshop, Paint, etc. - la transparence devient noire.

Existe-t-il une solution de contournement pour cela ? S'agit-il d'un problème de navigateur, d'application ou d'OS avec le presse-papiers ?

J'utilise Windows 7 et j'ai testé avec les dernières versions de Chrome et d'Internet Explorer.

1voto

Ezhik Points 131

J'en ai donc eu assez de ce désagrément et j'ai créé une solution de rechange.

Il y a deux parties à cela :

  • Un petit utilitaire que j'ai écrit pour sauvegarder l'image du presse-papiers dans un fichier .png.
  • Un site AutoHotKey script

L'AutoHotKey script vérifie si Photoshop est actuellement actif, et si c'est le cas, il intercepte la touche Ctrl + V et ensuite il exécute l'utilitaire.

Si l'utilitaire a enregistré une image sur %TEMP%\clip.png le Shift + Ctrl + F12 La combinaison de touches est envoyée à Photoshop, que j'ai mappé à une action Photoshop afin de placer l'image de l'image. clip.png dans le document actuellement ouvert.

Si l'utilitaire n'a pas enregistré l'image, la fonction standard Ctrl + V est envoyé à Photoshop et un collage standard est effectué.

Tout le code source est disponible ici : https://github.com/SilverEzhik/ClipboardToPNG et l'utilitaire peut être téléchargé ici : https://github.com/SilverEzhik/ClipboardToPNG/releases

Pour créer l'action Photoshop, il suffit de créer une nouvelle action dont la combinaison de touches correspond à Shift+Ctrl+F12 (ou de modifier la combinaison dans le fichier script, puis, pendant l'enregistrement, d'aller à l'adresse suivante File > Place Embedded... et coller %TEMP%\clip.png dans le champ du nom du fichier.

Le code source de l'AHK script est fourni ci-dessous - si vous n'avez pas utilisé AutoHotKey auparavant, installez-le, puis sauvegardez le code dans un fichier de type filename.ahk dans le même répertoire que l'utilitaire ClipboardToPNG.exe, puis exécutez-le.

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

0voto

Miguel Vitorino Points 2065

Je viens de passer beaucoup de temps à étudier la question. J'ai utilisé Photoshop pour copier des textures semi-transparentes pendant un certain temps lors du prototypage (avec la destination d'Axure RP).

Maintenant, j'ai essayé d'utiliser la nouvelle API du presse-papiers dans html 5. J'ai disséqué les fichiers PNG qui sont générés par ce processus.

Si j'utilise le presse-papiers (avec une marque rectangulaire) pour copier une texture semi-transparente dans le navigateur avec l'API du presse-papiers, l'octet alpha prend la valeur FF (complètement opaque).

Si j'utilise l'API de glisser-déposer pour copier un fichier PNG 24 " Enregistrer comme Web " dans le navigateur, cela fonctionne comme prévu et les pixels transparents fonctionnent (et l'octet alpha n'est pas forcé à FF).

Note : Même si Photoshop indique qu'il s'agit de 24 bits, il l'exporte en réalité en 8 bits (confirmé).

0voto

CMaxo Points 1

Pour ceux qui se posent la question, si vous obtenez une couleur de fond noire sur un fichier PNG copié même en l'ouvrant manuellement, essayez de vérifier s'il n'y a pas un canal alpha.

Il semble que selon le logiciel utilisé pour créer le PNG, la transparence est parfois conservée telle quelle à l'intérieur des couches, mais d'autres fois, elle est conservée dans un canal alpha.

Une astuce lorsqu'il est dans le canal alpha est simplement de CTRL+Clic sur le petit aperçu du canal alpha pour le sélectionner et ensuite créer un masque sur le calque avec le fond noir de la sélection. (Vous pouvez ensuite supprimer le canal alpha).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X