我首先在“图形设计”上提出了这个问题...从那时起,我就可以学习;并利用我不熟悉的程序(ImageMagick)能够使用以下命令将 RGB 值输出到文件名:
magick *.png -set colorspace RGB -set filename:f "%[pixel:p]" %[filename:f].png
所以我采取了这一步骤,而且成功了。快进到这里提出这个问题。我有一个文件夹,里面全是单一颜色的图像文件。我能够使用如上所示的 ImageMagick 更改文件名,使其与各个图像中包含的颜色相对应。以下是文件夹内部的屏幕截图:
我唯一的问题是:如何将文件名从十进制形式转换为十六进制?
因此,例如,我希望将文件的名称从“rgb(13,12,12).png”更改为相应的十六进制颜色代码:“0D0C0C.png”
这比我想象的要困难得多……一个可以运行的 Windows cmd 脚本或 BAT 将是理想的选择。这里有人能帮我完成这个任务吗?
- 我在 Windows 10 上安装了 GOW(GNU On Windows),它为我提供了以下 *nix 工具此处列出。
编者注:该列表包括以下 (IMO) 可能有用的程序:sed、bash、bc、dc、expr、printf(当然还有 mv)——但值得注意的是,不包括 awk。
答案1
使用 Powershell,您可以:
- 用来
"rgb(13,12,12).png" -replace "rgb(",""
剥离前四个 - 用来
"13,12,12).png" -replace ").png",""
剥离收尾 - 用来
"13,12,12" -split ","
分开碎片 - 用于
"{0:x}" -f 13
将 13 转换为十六进制
这应该可以帮助你入门。
如果您对某一部分感到困惑,您可以更新您的问题。
答案2
您的问题没有指定要使用哪种脚本来执行此操作。您可以使用 python:
import os
for filename in os.listdir('<your-directory>'):
if filename.endswith('png'):
rgb = filename.strip('rgb(').strip(').png').split(',')
hex = [format(int(c), '02x') for c in rgb]
new_filename = ''.join(hex) + '.png'
os.rename(filename, new_filename)
这假定该目录中的所有 png 文件都采用您指定的格式。