一、前话
对于图片优化,可能很多人都有这个想法,但是真正用于实践的人真的不多。
在chrome下使用pagespeed可以很清楚的看到在中优先级里,有一个项名为:优化图片,说的就是图片优化的事。里面列出网站所有可以压缩的图片。
基于对google的信任和崇拜,自然要弄明白用的是什么工具,然后查了一下官方文档,说是对于jpg/jpeg文件推荐使用jpegoptim进行压缩,但是没有说怎么去使用参数。这样就出现了本文。
二、jpegoptim使用
在网上找到了一篇文章:jpegoptim 优化 jpeg 图片,里面提供的一个方法是:jpegoptim –strip-com –strip-exif –strip-iptc -m85 ./IMG_4542.jpg
基于这些隔参数写了一个基于nodejs的压缩jpg脚本:
大致思路:
- 获取到对于的源文件,执行jpegoptim。
- 循环遍历文件里不是jpg/jpeg文件,判断是否是文件目录,是的话执行第一步
具体源码:
/** * jpg图片优化 * 使用:node jpg.js sourceDirname receiveDirname * 采用了jpepoptim工具 * */ var path = require('path'), fs = require('fs'), child_process = require('child_process'), exec = child_process.exec, tplCommand = 'jpegoptim --dest={r} -f -m85 --strip-com --strip-exif --strip-iptc {s}', sourceDir = process.argv[2] && path.resolve(process.argv[2]), receiveDir = process.argv[3] && path.resolve(process.argv[3]), jpgReg = /\.(jpg|jpeg)$/; console.log(sourceDir, receiveDir); if (!isDirectory(sourceDir)) { console.log('source dirname is require.'); process.exit(1); } // 判断是否有receive文件目录,没有在sourceDir的路径创建一个**_optimize目录 if (!receiveDir) { receiveDir = sourceDir + '_optimize'; console.log('Need add receiveDir:', receiveDir); if (!isDirectory(receiveDir)) { fs.mkdirSync(receiveDir); } } // 判断是否存在给定文件地址,没有则创建它 if (!isDirectory(receiveDir)) { console.log('mkdir:', receiveDir); fs.mkdirSync(receiveDir); } console.log('sourceDir:', sourceDir, ' receiveDir: ', receiveDir); /** * @description: 优化处理函数 * @param: dirname 文件目录的绝对路径,如:/home/ys/project/ * @param: pathname 文件相对于要压缩的目录的路径,如:pic/ */ function optimize(dirname, pathname) { fs.readdir(dirname, function(err, files) { if (err) { console.log('Readdir:', dirname, err); process.exit(1); } else { console.log(files); var l = files.length, filepath; // 空文件情况 if (l > 0) { compressJpeg(dirname, pathname); while(l--) { if (!jpgReg.test(files[l])) { filepath = path.resolve(dirname, files[l]); if (isDirectory(filepath)) { optimize(filepath, files[l]); } else { console.log('No such dirname:', filepath); } } } } } }); } /** * @description:压缩目录下所有的jpg,jpeg文件 * @param: dirname 文件目录的绝对路径,如:/home/ys/project/ * @param: pathname 文件相对于要压缩的目录的路径,如:pic/ */ function compressJpeg(dirname, pathname) { var receive = path.resolve(receiveDir, pathname); if (path !== '') { if (!isDirectory(receive)) { fs.mkdirSync(receive); } } var data = { s : path.resolve(dirname, '*'), r : receive }, command = tplCommand.replace(/{(\w+)}/g, function($0, $1) { return data[$1]; }); console.log(command) exec(command, function(err, stdout) { if (err) { console.log("Exec err: ", err); // process.exit(1); } console.log('optimize folder:', stdout); }); } /** * @description: 是否是一个文件目录 * @param: path 文件目录 */ function isDirectory(path) { if (fs.existsSync(path)) { return fs.statSync(path).isDirectory(); } return false; } optimize(sourceDir, ''); 转载自: http://www.bokeyy.com/post/jpgjpeg%E5%9B%BE%E7%89%87%E4%BC%98%E5%8C%96%E4%B9%8Bjpegoptim.html
相关推荐
JPEGOptim是一款开源的命令行工具,主要用于优化JPEG图片文件,从而减小它们的体积,同时尽可能保持原有的图像质量。这个工具在Linux环境下广泛使用,适用于网站管理员、开发者或者任何需要处理大量JPEG图像的用户。...
无损压缩JPEG图像,可以简单地在命令行中输入`jpegoptim photo.jpg`,这里的`photo.jpg`是你要压缩的图像文件名。这个命令会尝试优化图像,如果能够降低文件大小而不影响质量,原始图像将被覆盖。如果`jpegoptim`...
optimise-images.sh 使用 convert, , 和可选的 , 和批处理jpg,jpeg和png图像缩放器,优化器和图像分析器(Guetzli正在进行中)。从Dockerfile构建Docker映像手动Docker构建通过dockerbuild.sh 安装要安装在/root...
**JPEGoptim 开源工具详解** JPEGoptim 是一个高效且易用的开源工具,主要用于优化和压缩 JPEG 图像文件,以减少它们的存储空间占用,同时尽...无论是个人还是企业,JPEGoptim 都是图像优化领域不可或缺的工具之一。
jpegoptim-bin 是用于优化JPEG文件的实用程序,可提供无损优化(基于优化霍夫曼表)和基于设置最大质量因数的“有损”优化您可能需要来代替。安装$ npm install jpegoptim-bin确保您具有正确的libjpeg版本。 有关更...
除了PNG压缩,描述中还提到了JPG(JPEG)图片的压缩。JPEG是另一种常见的图像格式,尤其适用于照片,它采用有损压缩方法,牺牲部分质量以换取更小的文件尺寸。"jpegoptim.exe"和"jpegtran.exe"是两个常用的JPEG压缩...
jpegoptim是一个命令行工具,可以用来优化和压缩JPEG, JPG和JFIF文件,而不损失其实际质量。该工具支持无损优化,这是基于优化霍夫曼表的算法。 压缩图片至指定大小,写了2个sh文件,直接双击运行,方便使用。
优化器优化图像 JPG、PNG。安装npm install image-optimizer科莫 Optimizer = require ' image-optimizer 'optimizer = new Optimizer src : ' /path/to/src.ext ' dest : ' /path/to/dest.ext ' options : pngquant...
例如,OptiPNG用于优化PNG,jpegoptim专攻JPG,而ImageMagick是一个全能型工具,可以处理多种格式。 Spatie是一家知名的比利时软件开发公司,他们创建的ImageOptimizer库(在压缩包子文件的文件名"spatie-image-...
3. **缓存策略**:考虑到优化过程可能消耗服务器资源,可以考虑缓存优化后的图片,避免重复优化。 4. **CDN集成**:配合内容分发网络(CDN),可以进一步提升图片加载速度,减轻服务器压力。 总结,`laravel-image-...
软件支持多种常见的图片格式,如JPEG、PNG、GIF等。 在添加图片后,用户可以设置压缩参数。ImageOptimizer允许用户自定义压缩级别,以平衡图片质量和文件大小。默认情况下,软件会自动调整,但用户也可以根据需求...
这是Linux的Shell脚本,用于优化all子目录中的所有jpeg文件并调整其大小。 首先,您需要安装jpegoptim和imagemagick。 如果要使用,请在第2行上更改目录。如果要更改子目录的深度,请在第2行上更改-maxdepth。如果...
`jpegoptim`专用于优化JPEG文件,它能智能地调整图像质量,同时保持视觉上的可接受性。`optipng`则是PNG图像的优化工具,它能删除不必要的元数据并应用最佳的压缩设置。 “image-compression”和“image-...
Image Optimize Command是用于的WP CLI包装,它通过在各种图像运行来优化gif , jpeg , jpg , png , svg , webp图像。 阅读有关我为何创建它。 用法 # optimize specific attachments $ wp image-optimize ...