Vips writeToBuffer не применяет качество изображения

Я пытаюсь использовать метод libvips writeToBuffer с качеством, но он не применяет качество к изображению, есть ли какой-либо другой метод для установки качества. У меня ниже случай, если файл существует, тогда он вызывает writeToFile, иначе writeToBuffer. Есть ли какое-либо решение для достижения нижеприведенного случая?

$image = Vips\Image::newFromFile($sourceimgfile);
$result = $image->writeToBuffer('.jpg', ['Q' => 50]);
file_put_contents($destinationimgfile, $result);

Фактический результат:

введите здесь описание изображения

Если я установлю качество изображения 50, то оно должно дать мне изображение с низким разрешением, но все же оно будет генерировать то же изображение, что и входное изображение. Он не применил качество к изображению.


person Test Human    schedule 25.12.2020    source источник
comment
Он должен работать. Вам нужно предоставить больше информации: какие размеры файлов вы видите, что вы ожидаете, какую версию libvips вы используете, какую платформу вы используете, сделать полную, работающую программу, которая показывает проблему и т. д. и т. д.   -  person jcupitt    schedule 25.12.2020
comment
Я обновил свой вопрос с правильными входами   -  person Test Human    schedule 25.12.2020
comment
На самом деле это работает, я пытался применить низкое разрешение, я сравниваю оба изображения, все работает нормально. Спасибо   -  person Test Human    schedule 25.12.2020


Ответы (1)


Он должен работать. Вы можете проверить это в командной строке следующим образом:

$ 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 это всего 55 КБ, а в Q 90 - 260 КБ.

person jcupitt    schedule 25.12.2020