我将基于Gulp插件(例如imagemin包)找到jpg优化过程的最佳解决方案 . 我的目标是在Adobe Photoshop中压缩像Save For Web这样的jpg文件 - 渐进式:真实和质量:61 .
我有一个图像,以多种方式保存:
-
01.jpg(Photoshop - > ctrl s,最佳质量(12),格式:基本(标准)) - 89.5 KB
-
02.jpg(Photoshop - > ctrl s,高质量(8),格式:基本(优化)) - 51.1 KB
-
03.jpg(Photoshop - > ctrl s,中等质量(6),格式:渐进式) - 47.5 KB
-
04.jpg (Photoshop - > Save For Web,高品质(61),格式:渐进式) - 29.6 KB
So, my goal is to compress jpg via Gulp like 04.jpg.
The original image is 01.jpg (89.5 KB).
imagemin-jpegtran和imagemin-jpegoptim的结果还不够好,因为优化级别远不是Photoshop的Save For Web:
imagemin (jpegtran inside) -> 51.7 KB
imagemin-jpegoptim - 无法设置(任何帮助?)
module.exports = function (gulp, plugins, config) {
var jpegoptim = require('imagemin-jpegoptim');
return function(){
gulp.src(config.assets.images.temp + '**/*.jpg')
.pipe(jpegoptim({
progressive: true
})())
.pipe(gulp.dest(config.assets.images.src));
}
};
错误:写EOF
module.exports = function (gulp, plugins, config) {
var jpegoptim = require('imagemin-jpegoptim');
return function(){
gulp.src(config.assets.images.temp + '**/*.jpg')
.pipe(plugins.imagemin({
progressive: true,
use: [
jpegoptim({
max: 61
})()
]
}))
.pipe(gulp.dest(config.assets.images.src));
}
};
破解图像(缩小100% - 破碎文件)
我尝试使用 imagemin-jpeg-recompress ,但它抛出一个错误:
Error: Premature end of JPEG file
JPEG datastream contains no image
所以我的问题是......
How to achieve the same results via Gulp, as through Photoshop Save For Web?
2 回答
问题在于插件 imagemin jpeg recompress - 它在Windows中存在问题,最近它已修复 . 所以,我的问题不再是实际问题了 .
首先,JPEG中没有“质量”这样的东西 . 质量是许多JPEG编码器用于选择量化表的机制 . 除非两个编码器为相同的质量值选择完全相同的量化表,否则在不同的编码器上使用相同的“质量”会得到不同的结果 .
您需要找到正确的压缩设置组合,以获得您在GULP中实现的功能 .
您需要的设置是:渐进式或顺序式 . 渐进式JPEG通常比顺序压缩更好 . 如果使用渐进式,则可以调整扫描次数 .
调整采样可以改善压缩 .
量化表选择还可以改善压缩 .
您的编码器可能允许您在动态(更好但更慢)和静态(更差但更快)创建的霍夫曼表之间进行选择 .
您必须使用所有这些设置才能获得所需的结果 .