5

私はアニメーションgifをコピーしてWebページに貼り付けると、image/gifの代わりにimage/pngがコンソールに表示されます。ブラウザのクリップボードapiからアニメーションGIF画像を取得する方法は?

なぜですか?

document.onpaste = function(event) { 
    console.log(event.clipboardData.items[1]['type']); // 'image/png' 
}; 

どのようにしてGIF画像に一致させることができますか?

jsfiddlethis gifイメージでテストすることができます。

答えて

2

CF_GIFクリップボード形式はあまり使われません。ほとんどのアプリは、CF_BITMAP、CF_ENHMETAFILE、またはCF_DIBとしてのみ、クリップボードに画像をコピーします。ペーストすると、データはPNGやビットマップなど、対象アプリケーションが対象とする任意の形式に変換されます。 あなたのケースでは、GIFはおそらくビットマップとしてクリップボードにコピーされ、ペーストするときにPNGに変換されました。あなたのGIFのアニメーションフレームはすべて失われました。 保存するには、CF_HDROP、CF_FileNameなどでファイルの貼り付けをドラッグ/ドロップするかエミュレートする必要があります。

+0

回答ありがとうございますGmailで動作する - http://joxi.ru/XqYiUdg5CbBfA-DXlPw – milushov

+0

"CF_HDROP、CF_FileNameでファイルをエミュレートするファイルをエミュレートする" あなたはそれを行う方法を知っていますか? – milushov

0

イメージを右クリックして「イメージをコピー」することでGIFイメージをコピーすると、ファイル全体ではなく現在のフレームがコピーされます。ファイル全体をキャプチャする場合は、ドラッグドロップイベントでキャプチャすることをお勧めします。

+0

ありがとうございますが、この機能はgmailで動作します - http://joxi.ru/XqYiUdg5CbBfA-DXlPw :)しかし、私は彼らの醜いコードベースを理解できません。 – milushov

+0

ドラッグイベントを使用することはできません、私はちょうどクリップボードが必要です:( – milushov

+1

あなたが気にしない場合、Gmailは画像のクリップボードのデータの代わりにソースURLを使用しているようです画像が他の場所でホストされている場合は、その経路に進むことができます.http://i.imgur.com/4fHp2xB.jpg – Rovak

関連する問題