有人知道如何一次性更改多张图片的调色板吗?我尝试过很多不同的程序,但一定有比打开每张图片、单击导入调色板、然后找到 .pal 文件并保存文件更好的方法。我觉得计算机可以自动执行此操作,但我还没有找到方法。我使用 irfanview 和 GIMP 批量处理图像,如裁剪和重命名。现在我需要一个统一的调色板来导入并应用/保存到图像。我有成千上万张图像需要更改调色板,我正碰壁了。也许甚至有一个键盘记录可以复制我的按键,然后一遍又一遍地重复。一定有更好的方法。请提供任何想法!
答案1
首先,使用一张已经应用了色板的照片来创建一个新的调色板。
ffmpeg -i SomeImage.png -vf“palettegen” MyPalette.png
然后将以下代码复制到记事本,并以您想要的名称保存,但扩展名为 *.bat。在“set Pal=”部分,指定保存调色板的位置。接下来,将要应用调色板的图片所在的文件夹拖放到批处理文件中。
对于每个图像,都应该创建一个新图像,其名称与旧图像相同,但名称中带有“_new”。
@echo off
:: Please inform the color palete you want to use here:
set Pal=%userprofile%\desktop\Palette.png
if exist "%~1\" (set "Folder=%~1") else (exit)
pushd "%Folder%"
for /f "delims=" %%a in ('dir /b *.jpg *.png *.bmp') do ffmpeg -i "%%a" -i "%Pal%" -lavfi "paletteuse" "%%~na_new%%~xa"
在这个例子中,我使用了灰色风格的调色板,只是为了使差异更加明显:
更新:使用 Irfanview 的批处理文件:
@echo off
:: Please inform the color palete you want to use here:
set Pal=%userprofile%\desktop\playpal.pal
:: Please inform the path to irfranview here:
set Irfran=C:\Program Files\IrfanView\i_view64.exe
if exist "%~1\" (set "Folder=%~1") else (exit)
pushd "%Folder%"
for /f "delims=" %%a in ('dir /b *.jpg *.png *.bmp') do "%Irfran%" "%%a" /import_pal="%Pal%" /convert="%%~na_new%%~xa"
我使用从此处下载的调色板对此进行了测试:lospec.com