你好,
有没有办法将图像调整为方形图像,保持纵横比并填充其余部分?
有没有办法做到这一点?
谢谢
你好@doronAtuar ,
vipsthumbnail
不会那样做,不。 您可能需要运行第二个命令:
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 个图像
使用convert
使用 IM 每秒 30 张图像
我认为如果它是一个 cpp/c 实用程序,它可能会更快。
我很快就到了这里。 首先,100张测试图像:
$ for i in {1..100}; do vips crop ~/pics/k2.jpg $i.jpg 0 0 1024 720; done
然后是两个基准:
#!/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。