我有以下 bash 脚本 (.sh),它在 Unix 中运行得很好。我想转换为批处理 (.bat) 文件以便与 Windows 版 ImageMagick 一起使用,但转换时遇到了一些问题。
Unix 脚本的原始 GIT 存储库:
https://github.com/AndreyChernyh/imagemagick-filters
适用于 Windows 的 ImageMagick 版本:
http://www.imagemagick.org/download/binaries/ImageMagick-6.7.0-Q16-windows.zip
<强> earlybird.sh :
#!/bin/bash
SOURCE=$1
# Prepare
rm -f result.jpg source_copy.jpg mask.png
convert $SOURCE -fill rgba\(251,243,213,1.0\) -colorize 100% fill.jpg
convert assets/earlybird/mask.png -resize `identify -format "%wx%h" $SOURCE`\! mask.png
cp $SOURCE source_copy.jpg
# Run
convert fill.jpg $SOURCE -compose multiply -gravity center -composite - |
convert - -modulate 101,68,100 - |
convert - -gamma 1.19 - |
convert - -channel red +level 10.5%,100% - |
convert - -modulate 105,120 - |
convert - -modulate 100,83,100 - |
convert - -level 0%,92%,0.92 - |
convert mask.png - -compose ColorBurn -composite - |
convert mask.png - -compose Multiply -composite result.jpg
# Cleanup
rm -f source_copy.jpg fill.jpg
# Open
open $SOURCE result.jpg
这是我到目前为止所拥有的,但它没有按预期工作,因为我不确定相当于多个命令行参数的批处理文件是什么:例如“\”或“|”或者是否有可能。我在某处读到,等效项是插入符号“^”,但同样,我不能 100% 确定如何正确实现它。
@echo off
set SOURCE=%1
del result.jpg
del source_copy.jpg
del mask.png
convert.exe %SOURCE% -fill rgba(251,243,213,1.0\) -colorize 100% fill.jpg
convert.exe assets\earlybird\mask.png -resize 1024x768 mask.png
copy %SOURCE% source_copy.jpg
convert.exe fill.jpg %SOURCE% -compose multiply -gravity center -composite - ^
convert.exe - -modulate 101,68,100 - ^
convert.exe - -gamma 1.19 - ^
convert.exe - -channel red +level 10.5%,100% - ^
convert.exe - -modulate 105,120 - ^
convert.exe - -modulate 100,83,100 - ^
convert.exe - -level 0%,92%,0.92 - ^
convert.exe mask.png - -compose ColorBurn -composite - ^
convert.exe mask.png - -compose Multiply -composite result.jpg
del source_copy.jpg
del fill.jpg
工作代码:
这是我在应用@Gabe的答案后所做的事情。没有错误,并且运行完美!
@echo off
set SOURCE=%1
del result.jpg
del source_copy.jpg
del mask.png
conv %SOURCE% -fill rgba(251,243,213,1.0) -colorize 100%% fill.jpg
conv assets\earlybird\mask.png -resize 604x453 mask.png
copy %SOURCE% source_copy.jpg
conv fill.jpg %SOURCE% -compose multiply -gravity center -composite - |^
conv - -modulate 101,68,100 - |^
conv - -gamma 1.19 - |^
conv - -channel red +level 10.5%%,100%% - |^
conv - -modulate 105,120 - |^
conv - -modulate 100,83,100 - |^
conv - -level 0%%,92%%,0.92 - |^
conv mask.png - -compose ColorBurn -composite - |^
conv mask.png - -compose Multiply -composite result.jpg
del source_copy.jpg
del fill.jpg
最佳答案
你已经很接近了。我看到的大问题是您在 rgba(...)
中有一个额外的 \
,您需要转义您的 %
符号(例如%%
),并且需要在行继续符之前放置 |
(如 |^
)。试试这个:
@echo off
set SOURCE=%1
del result.jpg source_copy.jpg mask.png
convert.exe %SOURCE% -fill rgba(251,243,213,1.0) -colorize 100%% fill.jpg
convert.exe assets\earlybird\mask.png -resize 1024x768 mask.png
copy %SOURCE% source_copy.jpg
convert.exe fill.jpg %SOURCE% -compose multiply -gravity center -composite - |^
convert.exe - -modulate 101,68,100 - |^
convert.exe - -gamma 1.19 - ^
convert.exe - -channel red +level 10.5%%,100%% - |^
convert.exe - -modulate 105,120 - |^
convert.exe - -modulate 100,83,100 - |^
convert.exe - -level 0%%,92%%,0.92 - |^
convert.exe mask.png - -compose ColorBurn -composite - |^
convert.exe mask.png - -compose Multiply -composite result.jpg
del source_copy.jpg fill.jpg
关于windows - 将 Unix ImageMagick 脚本转换为 Windows 批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6366682/