问题描述
我正在尝试使用具有质量的 libvips writetoBuffer
方法,但它没有将质量应用于图像,是否还有其他设置质量的方法。如果文件存在,我有以下情况,否则它调用 writetoFile
否则 writetoBuffer
。有没有实现以下情况的解决方案?
$image = Vips\Image::newFromFile($sourceimgfile);
$result = $image->writetoBuffer('.jpg',['Q' => 50]);
file_put_contents($destinationimgfile,$result);
实际输出:
如果我将图像质量设置为 50,那么它应该给我低分辨率图像,但它仍然生成与输入图像相同的图像。它没有对图像应用质量。
解决方法
它应该可以工作。您可以像这样在命令行中进行测试:
$ vips jpegsave_buffer astronauts.png --Q 20
VIPS_TYPE_BLOB,data = 0x7f5388000b60,length = 55617
$ vips jpegsave_buffer astronauts.png --Q 90
VIPS_TYPE_BLOB,data = 0x7fefbc6f9010,length = 263341
所以在 Q 20,它只有 55kb,但 Q 90 是 260kb。