自动化 PNG 和 JPG 图片优化






4.63/5 (4投票s)
如何自动化 PNG 和 JPG 图片优化
引言
如果你是一名 Web 开发人员,你已经知道通过压缩图像来减小图像大小是多么重要。 当你使用像“Google PageSpeed Insight”或“Yahoo YSlow”之类的工具检查页面速度时,你可以看到通过压缩图像可以节省多少字节。
从 Fireworks 等程序保存的图像可能包含数千字节的额外注释,并且使用过多的颜色,即使减少颜色调色板也可能不会明显降低图像质量。 优化不当的图像可能占用比所需更多的空间; 对于使用慢速连接的用户来说,将图像大小保持在最小限度尤其重要。
你应该对所有图像执行基本和高级优化。 基本优化包括裁剪不必要的空间、将颜色深度降低到可接受的最低水平、删除图像注释以及将图像保存为适当的格式。 你可以使用任何图像编辑程序执行基本优化,例如 GIMP。 高级优化涉及对 JPEG 和 PNG 文件进行进一步(无损)压缩。 你应该看到任何可以减少 25 字节或更多的图像文件的收益(少于此将不会产生任何可观的性能提升)。 <Google Inc., 2012. 优化图像 https://developers.google.com/speed/docs/best-practices/payload#CompressImages >
有一些在线工具,例如“Yahoo Smush.it”,使用无损压缩技术并通过删除图像中不必要的字节来减小文件大小。 但是,如果你想使其自动化,该怎么做? 有几个独立的工具可用于对 JPEG 和 PNG 文件执行无损压缩。
对于 JPG,Google 建议使用
对于 PNG,Google 建议使用
Using the Code
在这里,我编写了一个 Windows 批处理文件,该文件递归地搜索给定文件夹并优化 JPEG 和 PNG 文件。
- 下载 jpegtran、OptPNG 和 PNGOUT 可执行文件。(或下载包含所有必要文件的附带 zip 文件)
- 在你的 C:\ 驱动器中创建一个名为“ImageOptimization”的文件夹。(你可以通过编辑批处理文件内容来更改这些名称和文件夹位置)并将上述下载的实用程序文件放在那里。
- 在文件夹中创建一个批处理文件“optimize.bat”,并将以下代码复制到其中
@echo none REM Optimizing JPEG with jpegtran forfiles /p %1 /s /m "*.jpg" /c "cmd /c echo processing @path && D:\ImageOptimization\jpegtran.exe -optimize -progressive -copy none -outfile @path @path" REM Optimizing PNG with pngout forfiles /p %1 /s /m "*.png" /c "cmd /c echo processing @path && D:\ImageOptimization\pngout.exe @path" REM Optimizing PNG with optipng rem forfiles /p %1 /s /m "*.png" /c "cmd /c echo processing @path && D:\ImageOptimization\optipng.exe -force -o7 @path" pause
虽然我在脚本中同时包含了
PNGOUT
和OPTPNG
。 但无需同时使用两者。 - 最后,你可以通过传递你希望优化的 image 文件夹来执行 bat 文件
optimize.bat “D:\image”
工作原理
- forfiles 命令 – 选择一个文件(或一组文件)并对每个文件执行一个命令(批处理)参考 http://ss64.com/nt/forfiles.html
- %1 – 接受文件夹作为参数。 在上面的示例中,这将等于“D:\Image”
forfiles 命令在给定目录(递归)中查找所有图像,并通过将图像作为参数传递给它们 (@path)来执行优化可执行文件。
试试
- 你可以通过将此批处理命令添加为上下文菜单命令来进一步改进
http://msdn.microsoft.com/en-us/library/windows/desktop/cc144169(v=vs.85).aspx - 或者你甚至可以使用计划程序(例如 Windows 计划程序)来查找每日更新的文件,并通过稍微修改带有“
/d
”选项的 forfiles 命令来优化它们。