XクリップボードがJPG画像を大容量ファイルとして保存するのはなぜですか?

XクリップボードがJPG画像を大容量ファイルとして保存するのはなぜですか?

私はLinux設定でXクリップボードの奇妙な動作を調べてきました。

最初はWebブラウザから画像をコピーしましたが、後でファイルを保存したときに画像がJPG形式であることがわかりました。ところで、ブラウザからコピーした画像をWhatsAppに貼り付けようとすると、「追加しようとしている画像が16MB制限よりも大きい」というエラーメッセージが表示されました。

この問題を診断するために、次の手順を実行しました。

直接画像を保存:

  • ブラウザから直接画像を保存してください。結果は1.7MB JPGです。

クリップボードの確認(初期):

  • xclipクリップボードの内容を確認するために使用されます。
  • text/htmlこの写真は形式を参照したことが確認された。最初は出力に使用できるPNG形式はありません-t TARGETS
    $ xclip -o selection clipboard -t TARGETS
    TIMESTAMP
    TARGETS
    MULTIPLE
    text/html
    text/_moz_htmlcontext
    text/_moz_htmlinfo
    UTF8_STRING
    COMPOUND_TEXT
    TEXT
    STRING
    text/plain;charset=utf-8
    text/plain
    text/x-moz-url-priv
    
  • 上記のターゲットの他のオプションはerrorには使用できませんError: target ... not available。検査目標は次のとおりですtext/html
    $ xclip -o -selection clipboard -t text/html
    <meta http-equiv="content-type" content="text/html; charset=utf-8"><img src="https://i.redd.it/678a4i8vv7l01.jpg" alt="Flashed Libreboot to X200 using BeagleBone Black : thinkpad" class=" nofocus" tabindex="0" aria-label="Flashed Libreboot to X200 using BeagleBone Black : thinkpad" role="button">
    

クリップボードサイズ:

  • さらなる調査の結果、クリップボードにサイズが16MBを超えるPNG形式の画像が保存されていることがわかりました。
  • インターネットを無効にしてFirefoxブラウザから画像をコピーします。
  • オフラインで貼り付けようとしましたが、ターゲットがimage/pngアクティブになりました。画像をファイルに保存します。
    $ xclip -o -selection clipboard -t image/png > /ramdisk/extracted_image.png
    
    これでimage/png、コピーされたすべてのイメージでターゲットがアクティブになります。

クリップのみ(Clip Mann)テスト:

  • Clipmanを無効にしてもう一度コピーしようとしましたが、WhatsAppに貼り付けるとまだ大きなPNG問題があります。

GIMPテスト:

  • 画像をGIMPにコピーします。
  • xclipこれで、PNG に関連するターゲットが表示されます。

画像抽出:

  • クリップボードから画像を抽出する:18.1MB PNGを作成します。

    $ \ls -l /ramdisk/extracted_image.png 
    -rw-r--r-- 1 sourav sourav 18134833 Aug 16 19:44 /ramdisk/extracted_image.png
    
  • Clipmanのキャッシュされたバージョンはわずかに小さい16MB PNGです。

    $ \ls -l ~/.cache/xfce4/clipman/image0.png 
    -rw-r--r-- 1 sourav sourav 600951 Aug 16 20:55 /home/sourav/.cache/xfce4/clipman/image0.png
    

圧縮チェック:

  • pngcheck2つの画像を実行します。
    $ pngcheck /home/sourav/.cache/xfce4/clipman/image0.
    OK: /home/sourav/.cache/xfce4/clipman/image0.png (4896x3264, 32-bit RGB+alpha, non-interlaced, 74.8%).
    
    $ pngcheck /ramdisk/extracted_image.png
    OK: /ramdisk/extracted_image.png (4896x3264, 32-bit RGB+alpha, non-interlaced, 71.6%).
    

Exiftoolは次のことを確認します。

  • exiftool2つの画像を実行します。
    $ exiftool /ramdisk/extracted_image.png /home/sourav/.cache/xfce4/clipman/image0.png
    ======== /ramdisk/extracted_image.png
    ExifTool Version Number         : 12.60
    File Name                       : extracted_image.png
    Directory                       : /ramdisk
    File Size                       : 18 MB
    File Modification Date/Time     : 2023:08:16 19:44:02+05:30
    File Access Date/Time           : 2023:08:16 19:43:59+05:30
    File Inode Change Date/Time     : 2023:08:16 19:44:02+05:30
    File Permissions                : -rw-r--r--
    File Type                       : PNG
    File Type Extension             : png
    MIME Type                       : image/png
    Image Width                     : 4896
    Image Height                    : 3264
    Bit Depth                       : 8
    Color Type                      : RGB with Alpha
    Compression                     : Deflate/Inflate
    Filter                          : Adaptive
    Interlace                       : Noninterlaced
    Significant Bits                : 8 8 8 8
    Image Size                      : 4896x3264
    Megapixels                      : 16.0
    ======== /home/sourav/.cache/xfce4/clipman/image0.png
    ExifTool Version Number         : 12.60
    File Name                       : image0.png
    Directory                       : /home/sourav/.cache/xfce4/clipman
    File Size                       : 16 MB
    File Modification Date/Time     : 2023:08:16 19:50:18+05:30
    File Access Date/Time           : 2023:08:16 19:50:11+05:30
    File Inode Change Date/Time     : 2023:08:16 19:50:18+05:30
    File Permissions                : -rw-r--r--
    File Type                       : PNG
    File Type Extension             : png
    MIME Type                       : image/png
    Image Width                     : 4896
    Image Height                    : 3264
    Bit Depth                       : 8
    Color Type                      : RGB with Alpha
    Compression                     : Deflate/Inflate
    Filter                          : Adaptive
    Interlace                       : Noninterlaced
    Significant Bits                : 8 8 8 8
    Image Size                      : 4896x3264
    Megapixels                      : 16.0
        2 image files read
    

上記の手順でわかるように、クリップボードはJPG画像を大きなPNG画像として保存します。これにより、いくつかの質問が生じます。

  • これらの変化の原因は何ですか?ブラウザですか、Xシステムですか、それとも別のツールですか?
  • 画像が最初はフォーマットでのみ提供されたのですtext/htmlが、後でPNG形式でダウンロードされたのはなぜですか?
  • 画像サイズを大幅に増やす原因となるクリップボードに保存されている正確なデータは何ですか?

関連情報