当我根据运行良好的文档在 node.js 中实现它时,我正在尝试使用mozjpeg压缩图像。
const input = fs.readFileSync("in.ppm");
const out = mozjpeg.encode(input, { quality: 85 });
我需要在客户端做压缩,所以我尝试对 react-native 做同样的事情,因为 react-native 不包含 fs 等核心节点模块,我需要去第三方库react-native -fs用于文件读取。
当我尝试mozjpeg.encode(input, { quality: 85 });
在 react-native 中执行时,它会抛出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);
客户端实现
fs.readFile(image.path).then(data => {
const out = mozjpeg.encode(data, { quality: 85 });
console.log(out);
}
这是我尝试过的事情的清单
- 尝试以十六进制、缓冲区、base64 和纯 URL 字符串形式输入。
- 由于 Android URL 包含
file://
前缀,因此我也尝试将其删除。