web-dev-qa-db-ja.com

ブラウザから透明にしてPNGをコピーすると黒い背景が表示される

透明度のあるPNG画像をクリップボードにコピーして、それをPhotoshopやPaintなどに貼り付けると、透明度が黒に変わります。

この問題に対する回避策はありますか?これはブラウザの問題、アプリケーションの問題、またはクリップボードのOSの問題ですか。

私はWindows 7を使用しており、ChromeとInternet Explorerの最新バージョンでテストしています。

44
Ryan Elkins

コピーペーストは透明性を維持しません。ファイルを保存してから、PhotoshopでOpen Fileを使用してください。私の知る限りでは、Paintは透明度が有効なPNGファイルを保存する機能を持っていません。

29
Gani Simsek

回答として、 @ DanLugg でコメントを投稿するWindows、私見:

  1. ブラウザから画像とCopy Image URLを右クリックします。
  2. PhotoshopでFile->Open(ctrl-o)を選択して、ダイアログのファイル名部分にURLを貼り付けてください。
    • Photoshop/WindowsはURLを一時ファイルにダウンロードして開きます。

OS Xの場合、ファイルを開くダイアログ/シートにURIを貼り付けることができるフィールドはありません。代わりに、ファイルをダウンロードして開き(ブラウザからデスクトップにドラッグしてから、新しいファイルをDockまたはPhotoshopドキュメントにドラッグします)、一時ファイルを削除します。


確かに、これはPhotoshopの問題であり、ブラウザやOSの問題ではないようです。 OS XでもWindowsでも、PNG画像をChrome(およびOS XではSafari)から透明にしてコピーし、それをIllustratorまたは他のアプリケーションに貼り付けて透明性を維持させることができます。 Photoshopだけで責任があります。

11
Phrogz

これを試してください:透明なイメージをコピーして、MS Wordに貼り付けてください。それをWordからコピー(またはドラッグアンドドロップ)して他のターゲットプログラムに貼り付けます。

ChromeからVisioへの貼り付けが黒くなったが、Wordで正しく機能し、それからWordからコピーしてVisioに正しく透過的に貼り付けた。

2
JamieRI

この問題に対処するための回避策を作りました。 PNGをコピーした後に私のスクリプトを実行すると、透明度をそのままにしてChromeからPhotoshop、Paintなどに画像を貼り付けることができます。

プログラム+出典: https://github.com/skoshy/CopyTransparentImages/releases

何か問題が発生した場合は、こちらまたはGithubでお知らせください。

1
Steve

ブラウザからPhotoshopまたはPNGファイルを適切に処理するプログラムに画像をドラッグするだけです。

0
Bob

気になる人は、コピーしたPNGファイルを手動で開いても背景色が黒になる場合は、アルファチャンネルがないかどうか確認してみてください。

どのソフトウェアを使ってPNGを作成したかによっては、透明度はレイヤー内のままに保たれることがありますが、それ以外の場合はアルファチャンネルに保たれます。

アルファチャンネルに入っているときのトリックは、単純にアルファチャンネルの小さいプレビューをCTRL +クリックしてそれを選択してから、選択部分から黒い背景を持つレイヤー上にマスクを作成することです。 (その後、アルファチャンネルを削除することができます)

0
CMaxo

私はこれを調べるのに多くの時間を費やしました。私は(Axure RPの目的地で)プロトタイプを作成しながら、しばらくの間半透明のテクスチャをコピーするためにPhotoshopを使用しました。

今、私はHTML 5で新しいクリップボードAPIを使用しようとしました。私はこのプロセスによって生成されるPNGファイルを詳細に分析しました。

クリップボードAPIを使用してクリップボード(長方形のマーキー付き)を使用してブラウザに半透明のテクスチャをコピーすると、アルファバイトはFF(完全に不透明)に設定されます。

ドラッグアンドドロップAPIを使用して「Webとして保存」PNG 24ファイルをブラウザにコピーした場合、期待どおりに機能し、透明ピクセルは機能します(アルファバイトは強制的にFFにされません)。

注意:Photoshopは24ビットだと思っていても、実際には8ビットとしてエクスポートしています(確認済み)。

0
Homer6

だから私はこの煩わしさにうんざりして回避策を作った。

それには2つの部分があります。

  • クリップボードの画像を.pngファイルに保存するために書いた小さなユーティリティ
  • AutoHotKey スクリプト

AutoHotKeyスクリプトは、Photoshopが現在アクティブになっているかどうかをチェックし、アクティブになっている場合はCtrl + Vのキーの組み合わせを傍受してからユーティリティを実行します。

ユーティリティが%TEMP%\clip.pngに画像を保存した場合、Shift + Ctrl + F12キーの組み合わせがPhotoshopに送信され、clip.pngファイルを現在開いているドキュメントに配置します。

ユーティリティが画像を保存しなかった場合は、標準のCtrl + VキーコンボがPhotoshopに送信され、標準の貼り付けが実行されます。

すべてのソースコードはこちらから入手できます。 https://github.com/SilverEzhik/ClipboardToPNG 、ユーティリティはこちらからダウンロードできます。 https://github.com/SilverEzhik/ClipboardToPNG/releases

Photoshop Actionを作成するには、Shift + Ctrl + F12にマッピングされたキーの組み合わせで新しいアクションを作成し(またはスクリプトファイルで組み合わせを変更し)、記録中にFile> Place Embedded...に移動し、ファイルに%TEMP%\clip.pngを貼り付けます。名前フィールド。

AHKスクリプトのソースコードを以下に示します。以前にAutoHotKeyを使用したことがない場合は、それをインストールしてから、そのコードをClipboardToPNG.exeユーティリティと同じディレクトリのfilename.ahkファイルに保存してから実行してください。

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