やあ、
画像のサイズを正方形の画像に変更し、アスペクト比を維持して残りを埋める方法はありますか?
それを中心に据える方法はありますか?
ありがとう
こんにちは@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"
したがって、ソース画像:
になる:
または(たとえば)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がありました。