Почему файл картинки .webp не сжался?
Запустил на ноде преобразование jpg весом 20 кб - > в webp base64 используя вот этот npm модуль https://www.npmjs.com/package/webp-converter
Получаю норм файл WEBP в виде строки base64 , но когда сохраняю то файл webp имеет размер 19 KB, то есть сжатие 5%, хотя по идее файл webp должен иметь сжатие оч сильное (в ~3 -4 раза) с тем же качеством картинки.
Менял параметр -q 80 на 30 и менее. Но это влияет только на качество картинки, но не на "сжатие веса".
Код:
const webp = require('webp-converter');
const fs = require('fs').promises;
async function getWebpBase64(path) {
const data = await fs.readFile(path);
const buf = Buffer.from(data);
const dataBase64 = Buffer.from(buf).toString('base64');
// base64str of image
// base64str image type jpg,png ...
//option: options and quality,it should be given between 0 to 100
return webp.str2webpstr(dataBase64, 'jpg', '-q 80');
}
async function main() {
const path = [[PYT]];
const result = await getWebpBase64(path);
console.log(result);
[[ITOG]] = result;
}
await main();
Ответы (1 шт):
Автор решения: eri
→ Ссылка
base64 увеличивает размер в 4 раза. используй бинарный формат для сохранения в файл.
почему бы не использовать imagemagick для этого?
команда найти все файлы размером больше 20к
$ find . -size +20k -iname "*.jpg" -exec ls -sh {} \;
172K ./1623912179161899925.jpg
36K ./Веб-камера/2021-09-20-151622.jpg
36K ./Веб-камера/2021-09-20-151641.jpg
40K ./изображение_viber_2021-10-23_23-31-38.jpg
24K ./photo_2020-12-27_18-25-14.jpg
пережимаем
$ find . -size +20k -iname "*.jpg" -exec mogrify -format webp {} \;
и вот результат
$ find . -iname "*.webp" -exec ls -sh {} \;
20K ./изображение_viber_2021-10-23_23-31-38.webp
20K ./Веб-камера/2021-09-20-151641.webp
20K ./Веб-камера/2021-09-20-151622.webp
16K ./photo_2020-12-27_18-25-14.webp
92K ./1623912179161899925.webp