使用 Imagemagick 一次批量组合图像与不透明度贴图

问题描述 投票:0回答:1

我有一个充满图像的目录,格式为 *_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.
image batch-file imagemagick transparency alpha
1个回答
0
投票

我自己已经弄清楚了

@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
行。如果原始反照率文件没有任何透明度,则不需要它,并且可以按照我在第一篇文章中的方式完成。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.