web-dev-qa-db-fra.com

Copier le format PNG avec transparence à partir du navigateur affiche plutôt un fond noir

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

Y at-il une solution de contournement pour cela? S'agit-il d'un problème de navigateur, d'application ou d'un problème de système d'exploitation lié au presse-papiers?

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

44
Ryan Elkins

Copier-coller ne maintient pas la transparence. Essayez d’enregistrer le fichier, puis utilisez Open File dans Photoshop. Autant que je sache, Paint n'a pas la capacité d'enregistrer des fichiers png activés pour la transparence.

29
Gani Simsek

Publier le commentaire par @DanLugg comme réponse, car c’est le plus pratique pour Windows , à mon humble avis:

  1. Cliquez avec le bouton droit sur l'image et Copy Image URL dans le navigateur.
  2. Dans Photoshop, choisissez File->Open (ctrl-o) et collez l’URL dans la partie du nom de fichier de la boîte de dialogue.
    • _ {Photoshop/Windows téléchargera l'URL dans un fichier temporaire et l'ouvrira.

Pour OS X , il n'y a pas de champ dans une boîte de dialogue/feuille de fichier ouvert dans lequel on pourrait coller un URI. Au lieu de cela, vous devez télécharger le fichier et l'ouvrir (par exemple, faites glisser le navigateur vers le bureau, puis faites-le glisser sur le Dock ou dans votre document Photoshop), puis supprimez le fichier temporaire.


FWIW, cela semble être un problème de {Photoshop} _, pas un problème de navigateur ou de système d’exploitation. Sous OS X et Windows, je peux copier une image PNG avec une transparence de Chrome (et également de Safari sur OS X) et la coller dans Illustrator ou d'autres applications et lui demander de conserver la transparence. Photoshop seul est à blâmer.

11
Phrogz

Essayez ceci: copiez l'image transparente, collez-la dans MS Word. ALORS, copiez-le (ou glissez/déposez) à partir de Word et collez-le dans l'autre programme cible.

J'ai trouvé un collage dans Visio à partir de Chrome qui devient noir, mais qui fonctionne correctement dans Word, puis copié à partir de Word qu'il colle correctement et de manière transparente dans Visio.

3
JamieRI

J'ai fait une solution de contournement qui résout le problème. L'exécution de mon script après la copie d'un fichier PNG vous permet de coller une image de Chrome dans Photoshop, Paint, etc. avec la transparence voulue.

Programme + Source: https://github.com/skoshy/CopyTransparentImages/releases

Si vous rencontrez des problèmes, n'hésitez pas à me le faire savoir ici ou sur Github!

1
Steve

Vous pouvez simplement faire glisser l'image du navigateur vers Photoshop ou tout autre programme permettant de gérer correctement un fichier PNG.

1
Bob

Si vous vous demandez si un fichier PNG copié a une couleur d'arrière-plan noire même lorsque vous l'ouvrez manuellement, essayez de vérifier s'il n'existe pas de canal alpha.

On dirait que, selon le logiciel utilisé pour créer le fichier PNG, la transparence est parfois conservée telle quelle dans les couches, mais à un autre moment, elle est conservée dans un canal alpha.

CTRL + Cliquez sur le petit aperçu du canal alpha pour le sélectionner, puis créez un masque sur le calque avec le fond noir de la sélection. (Ensuite, vous pouvez supprimer le canal alpha)

0
CMaxo

Je viens de passer beaucoup de temps à examiner cela. J'ai utilisé Photoshop pour copier des textures semi-transparentes pendant un certain temps tout en prototypant (avec la destination Axure RP).

Maintenant, j'ai essayé d'utiliser la nouvelle API Presse-papiers en HTML 5. J'ai disséqué les fichiers PNG générés par ce processus.

Si j'utilise le presse-papier (avec un rectangle de sélection) pour copier une texture semi-transparente dans le navigateur à l'aide de l'API du presse-papier, l'octet alpha est défini sur FF (complètement opaque).

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

Remarque: Même si Photoshop dit qu'il est en 24 bits, il l'exporte au format 8 bits (confirmé).

0
Homer6

Alors j'en ai marre de cette contrariété et j'ai fait une solution de contournement.

Il y a deux pièces:

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

Le script AutoHotKey vérifie si Photoshop est actuellement actif et, le cas échéant, intercepte la combinaison de touches Ctrl + V, puis exécute l'utilitaire.

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

Si l'utilitaire n'a pas enregistré l'image, le combo clé Ctrl + V standard 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, créez simplement une nouvelle action avec la combinaison de touches mappée sur Maj + Ctrl + F12 (ou modifiez la combinaison dans le fichier de script), puis, pendant l'enregistrement, accédez à File> Place Embedded... et collez %TEMP%\clip.png dans le fichier. champ de nom.

Le code source du script AHK est fourni ci-dessous. Si vous n'avez jamais utilisé AutoHotKey auparavant, installez-le, puis enregistrez-le dans un fichier 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
0
Ezhik