html批量处理图片尺寸,Windows命令行下批量优化图片脚本

很多时候我们需要将别人网站上的图片拿过来自己用,这些图片有些经过优化,有些没有,有些尺寸很小,但也有些特别大。而且图片的格式也不统一,大多是.jpg格式的,但也有.png/.gif 甚至 .bmp格式的。我发现很多外国的网站上喜欢使用 .png 格式的图片,也行是png图片格式不像其它图片那样有版权问题吧,但png的问题是体积非常大,而相同品质的jpg图片可能只有png图片的二分之一甚至三分之一。

我经常会遇到一个页面是有几十个png图片的问题,这时候必须将将这些图片优化压缩一下,因为你会发现其中有些看似很简单的普通的体积通常会有三、四百KB。由于经常会遇到这样的问题,我通常会将这个页面’另存为‘,保持到桌面,这样页面上的图片都会保存到一个文件夹里,我会用ImageMagic这个图片处理工具优化它们,如果一个图片一个图片的执行优化命令,那会非常费事,下面是我写的一个批处理文件,执行这个批处理文件,它会将指定文件目录下的所有图片全部转换成jpg格式,并且将图片质量压缩到80%品质:

@echo off

for /f "delims=" %%i in ('dir /b /s %1') do (

"D:/Program Files/ImageMagick-6.8.9-Q16/convert.exe" %%i -quality 80 %%i.jpg

echo %%i

del %%i

)

pause

需要注意的是,上面的ImageMagick的安装路径是我本机的路径,如果你需要使用这个脚本,需要将上面的路径该为自己的。这个脚本的执行过程是,首先遍历指定的目录(执行时提供的参数),然后用ImageMagick优化这个图片,并给这个文件改名,然后删除原文件。

我把这个脚本命名为batch-images-optimize.bat,假设我将所有的图片都放入了my-images目录里,执行的命令是这样的:

batch-images-optimize.bat my-images

执行完后你会发现,目录下的所有图片都变成了jpg格式,而且体积大幅度减小,我曾做过实验,优化前的目录下放置23个png图,总共体积是1.6M,执行完这个批处理命令后,总体积变成 465KB,体积减小了3/4,非常可观。

a0e61aab3f0a716b065f9b6960d0db7f.png

欢迎提出你对这个脚本的优化建议。

更新

在使用上面的批处理处理图片时,经常发现有些图片的尺寸过大,比如1400×1280,这样的图片尺寸过大导致体积过大,所以这里有了一个新需求,就是要减少图片的尺寸,下面的脚本能达到这样的目的:

@echo off

setlocal enabledelayedexpansion

for /f "delims=" %%i in ('dir /b /s %1') do (

echo %%i

identify -format "%%[fx:w] %%[fx:h]" %%i > %%i.txt

for /f "tokens=1,2" %%a in (%%i.txt) do set width=%%a&set height=%%b

rm %%i.txt

echo width:!width!, height:!height!

if !width! LSS 600 (

"D:/Program Files/ImageMagick-6.8.9-Q16/convert.exe" %%i -quality 80 %%i.jpg

) ELSE (

"D:/Program Files/ImageMagick-6.8.9-Q16/convert.exe" %%i -resize 600 -quality 80 %%i.jpg

)

del %%i

)

上面的脚本中我限定宽带大于600的图片都要resize到600,而小于600的图片将不变。600这个值你是可以调整到自己需要的数值。这个脚本中用到了setlocal enabledelayedexpansion,它的作用是让“变量延迟扩展”,而延迟扩展变量需要用“!width!”的方式引用。我在调试这个批处理脚本时,遇到循环读图片尺寸得到的数值总是第一张图片的尺寸,也就是图片尺寸变量赋值一次后再也不会改变,就是由于“变量延迟扩展”引起的。

还有一点,当图片格式是PNG时,有时执行脚本会遇到“iCCP: Not recognizing known sRGB profile”的错误提示,这说明这个PNG图片的数据格式不完整,但这只是个警告信息,它是由于高版本的ImageMagick增强了检查功能,不会影响正常的执行结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值