Как уменьшить размер файла data:image/png;base64 Javascript, Next.js

Я работаю с большим количеством изображений на веб-сайте проекта, и производительность сильно упала, и я получил много предупреждений от Next.js.

Я хочу уменьшить размер файла строки base64, чтобы уменьшить объем хранилища базы данных и повысить общую производительность.

в настоящее время строка байтов выглядит примерно так. "iVBORw0KGgoAAAANSUhEUgAAAagAAAAIACAIAAAB7GkOtAEAAEElEQVR4nEz9Wa8sa5IdiK1lZp97xN5nuEMOlZWVJKs5VQNUNwUIakiQBOhRr3rTD9Cj.."

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
90
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

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);
    }
  });

OP начинается с изображений PNG, а не JPEG.

Mark Adler 18.04.2023 18:54

@MarkAdler это просто пример того, что можно сделать, но спасибо, не заметил)))

Vlad 19.04.2023 09:57

работает ли этот пакет со строкой изображения base64? потому что это то, что я сохраняю в базе данных, или мне сначала нужно будет изменить строку на файл, а затем использовать этот пакет для снижения качества файла, а затем, наконец, изменить его обратно на строку, чтобы я мог сохранить ее в БД?

itsDanial 20.04.2023 06:30

@itsDanial не нужно менять файл, он отлично работает с base64

Vlad 20.04.2023 06:59
Ответ принят как подходящий

Ваши изображения уже сжаты. Вы можете удалить png-изображение из base64, попробовать на нем pngcrush, а затем повторно преобразовать в base64. Это может или не может дать вам много пробега.

Если вам нужно сохранить их в виде изображений png и не изменять их содержимое, например. не уменьшайте размеры изображений, тогда это будет настолько хорошо, насколько вы можете сделать.

Если вы согласны с потерей некоторого качества изображения и появлением некоторых артефактов, и если вместо них можно использовать изображения jpeg, то вы можете использовать резкость, как предложено в другом ответе, чтобы читать изображения png и записывать изображения jpeg. Или, если пункт назначения может его принять, вы можете вместо этого попробовать формат WebP.

ааа это имеет смысл. так что в основном я должен попытаться уменьшить размер, прежде чем изменить его на base64, а затем загрузить его как jpeg

itsDanial 20.04.2023 06:27

Другие вопросы по теме