Libvips: VipsCLIはパイプでファイル形式を指定します

作成日 2016年05月06日  ·  4コメント  ·  ソース: libvips/libvips

imagemagickでは、パイプの読み取りと書き込みを行い、パイプの形式を指定できます。

cat in.jpg | convert JPG:- -resize 50% PPM:- | jpeg-recompress --ppm -q medium - out.jpg

vipscliツールでは/ dev / stdinまたは/ dev / stdoutを使用できますが、ファイル形式を示す方法がないようです。これにより、vipsでパイプを使用して達成できる量が制限されます。

vipsが入力および出力画像のローダー/セーバーを指定/オーバーライドできるようになれば素晴らしいと思います。

構文例:

cat in.jpg | vips resize -[load=jpeg] -[save=ppm] 0.5 | jpeg-recompress --ppm -q medium - out.jpg

これにより、.vファイルへの書き込みにディスクI / Oを支払うことなく、複数のvipscli操作をチェーンすることもできます。

enhancement

最も参考になるコメント

これは8.9で追加されました。 あなたは例えば書くことができます。

aws s3 cp s3://mybucket/input.jpg - | \
  vips thumbnail_source [descriptor=0] .jpg 128 | \
    aws s3 cp - s3://mybucket/output.jpg

リリースノートには、より多くの情報があります。

https://libvips.github.io/libvips/2019/12/11/What's-new-in-8.9.html

全てのコメント4件

こんにちはフェリックス、これは少し話されています、ストリームをサポートする実験的なブランチさえあります:

https://github.com/jcupitt/libvips/tree/load-from-stream

このCプログラムを実行できます。

https://gist.github.com/jcupitt/ff21f5b8d1dd6ba54c6f

ソケットから一連の画像を読み取り、処理して、別のソケットに送信します。すべて、画像全体をロードする必要はありません。 目的はAWSバケットをサポートすることでしたが、コマンドラインパイプでも機能し、わずかな追加作業が必要です。

この問題については長い間おしゃべりがありました。

https://github.com/lovell/sharp/issues/30

私は少しあきらめ、それからそれはビット腐敗しました、そして私はそれをマスターにマージする準備ができてクリーンアップしようとしました、そしていくつかの問題にぶつかりました。 まだもう少し作業が必要です:/

複数の画像をストリーミングすることについては話していませんでしたが、それはすばらしい機能です。

主なアイデアは、ファイル拡張子から推測できない場合に、ローダーまたはセーバー(または大まかにファイルタイプ)を設定できるようにすることです。 シークが必要なファイルタイプにはもっと多くの問題があると確信していますが、たとえば。 jpeg、png、ppmは正常に機能します。 これは、同じファイルタイプを発行またはロードできる実装が複数ある場合にも役立ちます。 たとえば、PDFはpdfloadまたはmagickloadのいずれかでロードできます。

/ dev / stdinが機能するにはストリーミング関連のものが必要だと思います。 たとえば、これは失敗します。

$ cat k2.jpg | vips jpegload /dev/stdin x.jpg
VipsJpeg: Not a JPEG file: starts with 0x87 0xe5
...

ファイルローダーは、入力を数回開くことができることを期待しています。 ストリーミング関連のものは、これを可能にする読み取りバッファを追加します-ストリームのものからの多くの画像は単なるボーナスです。

これは8.9で追加されました。 あなたは例えば書くことができます。

aws s3 cp s3://mybucket/input.jpg - | \
  vips thumbnail_source [descriptor=0] .jpg 128 | \
    aws s3 cp - s3://mybucket/output.jpg

リリースノートには、より多くの情報があります。

https://libvips.github.io/libvips/2019/12/11/What's-new-in-8.9.html

このページは役に立ちましたか?
0 / 5 - 0 評価