Libvips: vipsthumbnail 使用填充调整大小

创建于 2019-01-23  ·  4评论  ·  资料来源: libvips/libvips

你好,

有没有办法将图像调整为方形图像,保持纵横比并填充其余部分?
有没有办法做到这一点?

谢谢

question

所有4条评论

你好@doronAtuar

vipsthumbnail不会那样做,不。 您可能需要运行第二个命令:

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 个图像
使用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。

此页面是否有帮助?
0 / 5 - 0 等级