Electron App 中的 Imagemin 不压缩图像
Imagemin in Electron App Not Compressing Images
我正在尝试使用此代码在 Electron 应用程序中压缩单个 PNG 图像
const files = await imagemin([filePath], {
destination: destinationPath,
plugins: [
imageminPngquant({
quality: [0.2, 0.4],
speed: 1
})
]
});
debuglog(files);
filePath 包含 PNG 文件的完整路径,例如
C:\Users\name\Downloads\images\needle.png
这个文件确实存在,而且路径是正确的:当我将相同的路径放入 Windows 资源管理器时,png 打开。
destinationPath 包含.png 文件所在目录的路径(换句话说,我想覆盖原始文件),例如
C:\Users\name\Downloads\images
当我运行这个的时候,原文件保持不变,函数调用返回的变量“files”包含一个空数组。
我做错了什么?有没有办法让调试输出告诉我 imagemin 到底在做什么?
更新:这是一个具体的例子。代码如下所示:
console.log("compressPNG");
console.log(filePath);
console.log(path);
var files = await imagemin([filePath], {
destination: path,
plugins: [
imageminPngquant({
quality: [0.2, 0.4],
speed: 1
})
]
});
console.log(files);
这会产生以下日志输出:
This bug report表示需要将反斜杠(\
)转换为正斜杠(/
)。
根据其中一位评论者的说法,imagemin
所依赖的包 globby
需要使用正斜杠 (/
) 作为分隔符的文件路径。
这是一个完整的例子:
const imagemin = require("imagemin");
const imageminPngquant = require("imagemin-pngquant");
let input_path = "C:\path\to\file.png";
let output_dir = "C:\output\directory";
// Replace backward slashes with forward slashes <-- Option A
input_path = input_path.replace(/\/g, "/");
output_dir = output_dir.replace(/\/g, "/");
(async () => {
var files = await imagemin([input_path], {
destination: output_dir,
// glob: false, <-- Option B
plugins: [
imageminPngquant({
quality: [0.2, 0.4],
speed: 1
})
]
});
console.log(files);
})();
或者,设置 glob: false
也应该有助于接受 Windows 文件路径,因为它绕过了 globby
模块的使用。
我正在尝试使用此代码在 Electron 应用程序中压缩单个 PNG 图像
const files = await imagemin([filePath], {
destination: destinationPath,
plugins: [
imageminPngquant({
quality: [0.2, 0.4],
speed: 1
})
]
});
debuglog(files);
filePath 包含 PNG 文件的完整路径,例如
C:\Users\name\Downloads\images\needle.png
这个文件确实存在,而且路径是正确的:当我将相同的路径放入 Windows 资源管理器时,png 打开。
destinationPath 包含.png 文件所在目录的路径(换句话说,我想覆盖原始文件),例如
C:\Users\name\Downloads\images
当我运行这个的时候,原文件保持不变,函数调用返回的变量“files”包含一个空数组。
我做错了什么?有没有办法让调试输出告诉我 imagemin 到底在做什么?
更新:这是一个具体的例子。代码如下所示:
console.log("compressPNG");
console.log(filePath);
console.log(path);
var files = await imagemin([filePath], {
destination: path,
plugins: [
imageminPngquant({
quality: [0.2, 0.4],
speed: 1
})
]
});
console.log(files);
这会产生以下日志输出:
This bug report表示需要将反斜杠(\
)转换为正斜杠(/
)。
根据其中一位评论者的说法,imagemin
所依赖的包 globby
需要使用正斜杠 (/
) 作为分隔符的文件路径。
这是一个完整的例子:
const imagemin = require("imagemin");
const imageminPngquant = require("imagemin-pngquant");
let input_path = "C:\path\to\file.png";
let output_dir = "C:\output\directory";
// Replace backward slashes with forward slashes <-- Option A
input_path = input_path.replace(/\/g, "/");
output_dir = output_dir.replace(/\/g, "/");
(async () => {
var files = await imagemin([input_path], {
destination: output_dir,
// glob: false, <-- Option B
plugins: [
imageminPngquant({
quality: [0.2, 0.4],
speed: 1
})
]
});
console.log(files);
})();
或者,设置 glob: false
也应该有助于接受 Windows 文件路径,因为它绕过了 globby
模块的使用。