我有一个充满图像的目录,格式为 *_Alb.png 和 *_Opa.png,其中 Opa 文件是 Alb 图像的黑白“不透明度贴图”。我想将不透明度贴图转换为 Albedo 图像的 Alpha 通道,这个文件夹中大约有 100 个,我想将其发送到输出时的另一个文件夹。*/png
我可以使用以下方法对单个图像执行此操作:
magick [filename]_Alb.png [filename]_Opa.png -compose CopyOpacity -composite done/[filename].png
但是我所做的任何尝试自动化处理多个图像的尝试都不起作用。这是我当前使用批处理文件的尝试:
@echo off
setlocal enableextensions enabledelayedexpansion
set file=before
for /R [folder path] %%a in (./*Alb.png) do (
set "file=%%a"
magick !file:~34,0! !file:~34,-8!_Opa.png -alpha Off -compose CopyOpacity -composite output/!file:~34,-8!.png
)
它为每一行提供以下输出:
magick: image sequence is required `-composite' @ error/operation.c/CLIListOperatorImages/4057.
我自己已经弄清楚了
@echo off
setlocal enableextensions enabledelayedexpansion
set file=before
for /R [file path] %%a in (./*Alb.png) do (
set "file=%%a"
magick !file:~34,-8!_Alb.png ^
( +clone -alpha extract !file:~34,-8!_Opa.png -compose Multiply -composite ^) ^
-compose CopyOpacity -composite ^
output/!file:~34,-8!.png
)
我遇到的错误是通过将
!file:~34,0!
更改为 !file:~34,-8!_Alb.png
来修复的,尽管这两个应该具有相同的输出。我不确定这是如何工作的,如果有人想详细说明为什么会受到赞赏,我的理论是有一些角色魔法最后不知道如何处理。
原始反照率文件有自己的透明度,因此为了将它们合并而不是丢弃它,我可以在网上找到
+clone
行。如果原始反照率文件没有任何透明度,则不需要它,并且可以按照我在第一篇文章中的方式完成。