如何在 PowerShell 中使用 ImageMagick
howto use imagemagick in powershell
我正在尝试将 bat 文件转换为 powershell 脚本。
但是我无法解决imagemagick命令来判断照片是否为黑白。
你能帮帮我吗?
w.
蝙蝠文件:
for %%f in (*.jpg) do (
%%f
for /f %%i in ('magick "%%f" -colorspace HSL -channel g -separate +channel -format "%%[fx:mean]" info:') do set VAR=%%i
if !VAR! LEQ 0.05 copy "%%f" .\bw)
powershell:
param ([string]$Path = "\nas\photo\")
Add-Type -assembly "system.io.compression.filesystem"
$PathArray = @()
$magickExePath = "C:\Program Files\ImageMagick-7.1.0-Q16-HDRI\magick.exe"
Get-ChildItem $Path -directory -exclude "#recycle" -re |
ForEach-Object {
#$_.FullName
#$_.Name
If (($_.Name -match "landschap"))
{
$source = $_.FullName
$_.FullName
$_.name
$MagickArguments = "$_.name -colorspace HSL -channel g -separate +channel -format "$_.name[fx:mean]" info:' "
$ColorLevel = $magickExePath $MagickArguments
}
}
我希望 $colorlevel 是一个介于 0 和 1 之间的数字。
如果您希望 PowerShell 执行其路径存储在 变量(或 引用)中的可执行文件, 你必须使用 &
, call operator.
要将参数存储在变量中,请创建一个 数组,其中的每个元素代表一个要传递的单独参数。
$MagickArguments = @(
$_.Name
'-colorspace'
'HSL'
'-channel'
'g'
'-separate'
'+channel'
'-format'
'%[fx:mean]'
'info'
)
[double] $ColorLevel = & $magickExePath $MagickArguments
直接传递参数会更简单:
[double] $ColorLevel = & $magickExePath $_.Name -colorspace HSL -channel g -separate +channel -format %[fx:mean] info:
我正在尝试将 bat 文件转换为 powershell 脚本。 但是我无法解决imagemagick命令来判断照片是否为黑白。
你能帮帮我吗? w.
蝙蝠文件:
for %%f in (*.jpg) do (
%%f
for /f %%i in ('magick "%%f" -colorspace HSL -channel g -separate +channel -format "%%[fx:mean]" info:') do set VAR=%%i
if !VAR! LEQ 0.05 copy "%%f" .\bw)
powershell:
param ([string]$Path = "\nas\photo\")
Add-Type -assembly "system.io.compression.filesystem"
$PathArray = @()
$magickExePath = "C:\Program Files\ImageMagick-7.1.0-Q16-HDRI\magick.exe"
Get-ChildItem $Path -directory -exclude "#recycle" -re |
ForEach-Object {
#$_.FullName
#$_.Name
If (($_.Name -match "landschap"))
{
$source = $_.FullName
$_.FullName
$_.name
$MagickArguments = "$_.name -colorspace HSL -channel g -separate +channel -format "$_.name[fx:mean]" info:' "
$ColorLevel = $magickExePath $MagickArguments
}
}
我希望 $colorlevel 是一个介于 0 和 1 之间的数字。
如果您希望 PowerShell 执行其路径存储在 变量(或 引用)中的可执行文件, 你必须使用
&
, call operator.要将参数存储在变量中,请创建一个 数组,其中的每个元素代表一个要传递的单独参数。
$MagickArguments = @(
$_.Name
'-colorspace'
'HSL'
'-channel'
'g'
'-separate'
'+channel'
'-format'
'%[fx:mean]'
'info'
)
[double] $ColorLevel = & $magickExePath $MagickArguments
直接传递参数会更简单:
[double] $ColorLevel = & $magickExePath $_.Name -colorspace HSL -channel g -separate +channel -format %[fx:mean] info: