ImageMagick 的安装及使用其来压缩图片

一、下载与安装:

ImageMagick – Download

上面的地址有 Linux, MacOS, Windows 各位版本,自己选择就是了。

我这里下载的是 Windows 版本。

下载后安装也很简单,安装完成可以看一下环境变量已自动添加。

环境变量有什么用?

设置好之后可以在系统任意路径上直接执行,如果没有的话要回到这个路径或者指定路径才能执行。

这个环境变量已自动设置好就不管了,不用自己再设置。

 二、如何压缩图片大小

2.1 最简单的单文件压缩

--查看版本
magick --version
--压缩图片到原来质量的40%,路径和文件名不改变
magick convert -quality 40 1.jpg 1.jpg

2.2 自带功能实现批量的方法:

这个虽然简洁,但在文件数量巨大时不推荐,很可能会卡住

magick mogrify -format jpg -quality 40 *.jpg

2.3 windows下用批处理脚本来批量处理:

@echo off
for /f "delims=" %%i in ('dir /b /s %1') do (
	magick convert -quality 40 %%i %%i
	echo %%i
)
pause

2.4 结合 PowerShell 实现批量压缩文件的方法:

将 d:\tmp, d:\tmp2 目录下,所有扩展名为 .jpg, .jpeg, png ,文件大于 600KB 的图片文件,压缩为质量为原来 40% 。

如果检测到无法识别的图片,转移到备份目录,并记录下原来的路径。

注:这里安装路径原来是 d:\Program Files\ ,但写成脚本始终过不了,转义也不行,最后只好重新安装,取没有空格的文件夹。如哪位能用带空格的方式通过,请告知。 

下面的脚本保存为 xx.ps1,方便其它地方调用执行。

$base = "D:\Program\ImageMagick-7.1.0-Q16-HDRI\magick.exe convert -quality 40 "
$format="jpg","jpeg","png"
$before=(Get-Date).AddDays(-7000)					#set bigger value when first use. last set 7
$dir1 = "D:\tmp\"
$dir2 = "D:\tmp2\"
$dirs = $dir1,$dir2
$bakDir = "D:\bak\"                        #backup directory
$bakFileReadme = "D:\bak\readme.txt"
ForEach($dir in $dirs){
    ForEach($item in $format){
        Get-ChildItem $dir -recurse | Where-Object { 
            $_.Extension -eq ".$item" -and $_.Length -gt 600*1024 -and $_.LastWriteTime -gt $before
        } | ForEach-Object{
            $size=$_.Length/1024;
            if($size -gt 10*1024){
                $convert = $base+" -resize 20%x20% "+$_.FullName+" "+$_.FullName;
            } 
            elseif($size -gt 5*1024){
                $convert = $base+" -resize 30%x30% "+$_.FullName+" "+$_.FullName;
            } 
            elseif($size -gt 1*1024){
                $convert = $base+" -resize 40%x40% "+$_.FullName+" "+$_.FullName;
            }
            else{
                $convert = $base+$_.FullName+" "+$_.FullName;
            }
            #Write-Host ($_.FullName+"=>"+ ($size -as [int]).ToString()+'KB');
            #Write-Host $convert;
			$convert+=';$?'
            $r = invoke-expression  ( $convert );
			if(!$r){
				Move-Item $_.FullName $bakDir
				$_.FullName | Out-File -Append $bakFileReadme
            }
        }
    }
}

PowerShell 也是非常强大,强强联手就是天下无敌了。


这个工具的功能非常繁多,这里只演示了最简单的压缩图片的功能。

参考文档:

w3cshool

 ImageMagick 的安装及使用 - Rogn - 博客园

windows使用ImageMagick给图片瘦身_王大阳的博客-CSDN博客

用ImageMagick批量处理照片 - 知乎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值