react-native中的图像压缩

问题描述 投票:5回答:1

[我尝试根据mozjpeg压缩效果很好的文档在node.js中实现图像压缩。

const input = fs.readFileSync("in.ppm");
const out = mozjpeg.encode(input, { quality: 85 });

我需要在客户端进行压缩,因此我尝试对react-native进行相同的操作,因为react-native不包含诸如fs之类的核心节点模块,因此我需要使用第三方库[ C0]用于读取文件。

[当我尝试在react-native中执行react-native-fs时会抛出mozjpeg.encode(input, { quality: 85 });

服务器端实现

Unrecognized input file format --- perhaps you need -targa

客户端实现

const mozjpeg = require("mozjpeg-js");
const fs = require("fs");

const input = fs.readFileSync(filePath);
const out = mozjpeg.encode(input, { quality: 85 });
console.error(out.stderr);
fs.writeFileSync("out.jpg", out.data);

这是我尝试过的事情清单

  • 试图以十六进制,缓冲区,base64和纯URL字符串形式输入。
  • 由于Android URL包含fs.readFile(image.path).then(data => { const out = mozjpeg.encode(data, { quality: 85 }); console.log(out); } 作为前缀,因此我也尝试将其删除。
javascript android react-native image-compression mozjpeg
1个回答
0
投票

您可以在file://文档中找到输入参数为:

类型化的数组或数据缓冲区


mozjpeg-js在客户端(fs.readFile)中的返回类型为react-native-fs,并返回内容。 (Promise<string>

但是在服务器端(Doc)中,fs返回缓冲区对象。 (fs.readFileSync


因此您可以使用此功能将字符串更改为类型数组:

Doc
© www.soinside.com 2019 - 2024. All rights reserved.