如何减少数据:image/png;base64 file size Javascript,Next.js

5kgi1eie  于 2023-04-19  发布在  Java
关注(0)|答案(2)|浏览(168)

我在一个项目网站上处理了很多图像,性能下降了很多,我收到了Next.js的许多警告。
我想减小base64字符串的文件大小,这样就可以减少数据库存储并提高一般性能。
当前字节串看起来有点像“iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAEAAElEQVR4nEz9Wa8sa5IdiK1lZp97xN5nuEMOlZWVJKs5VQNUNwUIakiQBOhRr3rTD9Cj..”

0pizxfdo

0pizxfdo1#

通过设置适当的压缩选项,您可以使用锐化来压缩图像,而不会损失太多的质量。

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.log(info);
    }
  });
fzwojiic

fzwojiic2#

你的图片已经被压缩了。你可以取消base64的png图片,尝试pngcrush,然后重新base64。这可能会给你带来很多好处,也可能不会。
如果你需要将它们作为png图像保存,并且不改变它们的内容,例如不减小图像的大小,那么这将是你所能做的最好的。
如果你不介意丢失一些图像质量并看到一些伪影,并且如果jpeg图像可以用在它们的位置,那么你可以像另一个答案中建议的那样使用sharp来读取png图像并写出jpeg图像。或者如果目标可以接受它,你可以尝试WebP格式。

相关问题