web-dev-qa-db-ja.com

テキストフィールドに貼り付けられたxclip画像のバイナリコンテンツ

Pngファイルを選択して、次のコマンドを実行するとします。

xclip -selection clip -t image/png image.png

これで、クリップボードにその画像が表示されます。画像が入るところに貼り付ければ、期待通りに貼り付けられて良かったです。

代わりに、Firefoxのアドレスバーまたはこれを入力しているテキストフィールドでctrl + Vを押すことを検討してください。ファイルのバイナリコンテンツがテキストフィールドに逐語的に貼り付けられ、場合によってはブラウザがハングします。しばらくの間。

もちろん、そこに画像を貼り付けても意味がないことはわかっていますが、誤って貼り付けると問題が発生することがあります。

代わりに、Firefoxの[画像のコピー]ボタンを使用してコピーした画像を貼り付けた場合、貼り付けようとしても貼り付けられないため、この動作を可能にするためにクリップボードに保存できる必要があります。

画像をバイナリデータとしてテキストフィールドに逐語的に貼り付けずにクリップボードに画像を配置するにはどうすればよいですか?なんとかして画像とテキスト文字列(画像へのパスなど)の両方をクリップボードに配置し、貼り付けるときに適切なものを選択させることができれば、それは素晴らしいことです。

5
Alice Ryhl

あなたがしたように、xclipを使用して画像をクリップボードにコピーしました。取得したターゲットのリストは次のとおりです。

> xclip -selection clip -t TARGETS -o
TARGETS
image/png

そして今、私がウェブページから画像をコピーすると、私はこれを手に入れます:

> xclip -selection clip -t TARGETS -o
TIMESTAMP
TARGETS
MULTIPLE
SAVE_TARGETS
text/html
text/_moz_htmlinfo
text/_moz_htmlcontext
image/png
image/jpeg
image/x-icon
image/x-ico
image/x-win-bitmap
image/vnd.Microsoft.icon
application/ico
image/ico
image/icon
text/ico
image/tiff
image/bmp
image/x-bmp
image/x-MS-bmp

たとえば、ターゲットをtext/htmlとして設定すると、そのような出力が得られます

> xclip -sel c -t text/html -o       
<img src="..." alt="...">>

だから明らかにそれは前の答えで述べられているようにxclipの問題です

3
Bad Blue Bull

上記の答えは不完全または不正確のようです。 Mozilla Firefoxから画像をコピーした後、次の出力が得られます。

$ xclip -selection clip -t TARGETS -o
TIMESTAMP
TARGETS
MULTIPLE
SAVE_TARGETS
text/html
text/_moz_htmlinfo
text/_moz_htmlcontext
image/png
image/bmp
image/x-bmp
image/x-MS-bmp
image/x-icon
image/x-ico
image/x-win-bitmap
image/vnd.Microsoft.icon
application/ico
image/ico
image/icon
text/ico
image/jpeg

前のawnserが述べているように、「text/html」として出力すると、画像へのリンクを含む有効なhtmlドキュメントが出力されます。ただし、「image/png」(または同様のオプションのいずれか)を選択すると、生のpngデータが出力されます。

Tl; dr:xclip -selection clip -t TARGETS -oは、貼り付けることができる形式を示します。使用する xclip -selection clip -t '$TYPE' -oいずれかを選択します。これはファイルに直接保存でき、ほぼ期待どおりに機能します。

0
Matthew