Я работаю с большим количеством изображений на веб-сайте проекта, и производительность сильно упала, и я получил много предупреждений от Next.js.
Я хочу уменьшить размер файла строки base64, чтобы уменьшить объем хранилища базы данных и повысить общую производительность.
в настоящее время строка байтов выглядит примерно так. "iVBORw0KGgoAAAANSUhEUgAAAagAAAAIACAIAAAB7GkOtAEAAEElEQVR4nEz9Wa8sa5IdiK1lZp97xN5nuEMOlZWVJKs5VQNUNwUIakiQBOhRr3rTD9Cj.."



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать резкость для сжатия изображений без потери качества, установив соответствующие параметры сжатия.
import sharp from 'sharp';
const inputFile = 'path/to/input/image.jpg';
const outputFile = 'path/to/output/image.jpg';
const quality = 80; // a value between 0 and 100, where 0 is the lowest quality and 100 is the highest quality
sharp(inputFile)
.jpeg({ quality })
.toFile(outputFile, (err, info) => {
if (err) {
console.error(err);
} else {
console.info(info);
}
});
@MarkAdler это просто пример того, что можно сделать, но спасибо, не заметил)))
работает ли этот пакет со строкой изображения base64? потому что это то, что я сохраняю в базе данных, или мне сначала нужно будет изменить строку на файл, а затем использовать этот пакет для снижения качества файла, а затем, наконец, изменить его обратно на строку, чтобы я мог сохранить ее в БД?
@itsDanial не нужно менять файл, он отлично работает с base64
Ваши изображения уже сжаты. Вы можете удалить png-изображение из base64, попробовать на нем pngcrush, а затем повторно преобразовать в base64. Это может или не может дать вам много пробега.
Если вам нужно сохранить их в виде изображений png и не изменять их содержимое, например. не уменьшайте размеры изображений, тогда это будет настолько хорошо, насколько вы можете сделать.
Если вы согласны с потерей некоторого качества изображения и появлением некоторых артефактов, и если вместо них можно использовать изображения jpeg, то вы можете использовать резкость, как предложено в другом ответе, чтобы читать изображения png и записывать изображения jpeg. Или, если пункт назначения может его принять, вы можете вместо этого попробовать формат WebP.
ааа это имеет смысл. так что в основном я должен попытаться уменьшить размер, прежде чем изменить его на base64, а затем загрузить его как jpeg
OP начинается с изображений PNG, а не JPEG.