Libvips: vipsthumbnailはパディングでサイズ変更します

作成日 2019年01月23日  ·  4コメント  ·  ソース: libvips/libvips

やあ、

画像のサイズを正方形の画像に変更し、アスペクト比を維持して残りを埋める方法はありますか?
それを中心に据える方法はありますか?

ありがとう

question

全てのコメント4件

こんにちは@doronAtuar

vipsthumbnailはそれをしません、いいえ。 2番目のコマンドを実行する必要があります。おそらく次のようになります。

vipsthumbnail IMG_1503.JPG -s 500x500 -o temp.v
vips gravity temp.v thumb.jpg centre 500 500 --background "128 128 255"

したがって、ソース画像:

img_1503

になる:

thumb

または(たとえば)Pythonの場合:

import pyvips

x = pyvips.Image.thumbnail("IMG_1503.JPG", 500, height=500)
x = x.gravity("centre", 500, 500, background=[128, 128, 255])
x.write_to_file("thumb.jpg")

ねえ@jcupittそれは動作します!
迅速な返答に感謝致します!!

私はそれが本当のベンチマークではないことを知っていますが...
1024x720のサイズの画像を白いパディングで416x416に変換しています
pyvipsを使用すると、毎秒45枚の画像のサイズを変更できます。
IMでは、 convertを使用して

それがcpp / cユーティリティだったら、おそらくもっと速いと思います。

私はここに急いで行きました。 まず、100枚のテスト画像:

$ for i in {1..100}; do vips crop ~/pics/k2.jpg $i.jpg 0 0 1024 720; done

次に、2つのベンチマーク:

#!/usr/bin/python3

import sys
import pyvips

SIZE = 416

for filename in sys.argv[1:]:
    x = pyvips.Image.thumbnail(filename, SIZE, height=SIZE)
    x = x.gravity("centre", SIZE, SIZE, background=255)
    x.write_to_file("tn_" + filename)
#!/bin/bash

size=416

for filename in $*; do
        convert $filename \
                -resize "${size}x${size}>" \
                -background white \
                -gravity center \
                -extent ${size}x${size} \
                tn_$filename
done

そして、この2015年のラップトップで私は得ます:

$ time ../padthumb.sh *.jpg
real    0m4.341s
user    0m10.856s
sys 0m1.091s

つまり、23 op / sec、およびpyvips:

$ time ../padthumb.py *.jpg
real    0m1.927s
user    0m2.860s
sys 0m0.219s

51操作/秒

私は巨大なi7デスクトップで試してみましたが、変換には34 op / sec、pyvipsには76 op / secがありました。

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