如何批量将文件名从十进制转换为十六进制颜色代码?

如何批量将文件名从十进制转换为十六进制颜色代码?

我首先在“图形设计”上提出了这个问题...从那时起,我就可以学习;并利用我不熟悉的程序(ImageMagick)能够使用以下命令将 RGB 值输出到文件名:

magick *.png -set colorspace RGB -set filename:f "%[pixel:p]" %[filename:f].png

所以我采取了这一步骤,而且成功了。快进到这里提出这个问题。我有一个文件夹,里面全是单一颜色的图像文件。我能够使用如上所示的 ImageMagick 更改文件名,使其与各个图像中包含的颜色相对应。以下是文件夹内部的屏幕截图:

RGB 十进制文件名

我唯一的问题是:如何将文件名从十进制形式转换为十六进制?

因此,例如,我希望将文件的名称从“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 文件都采用您指定的格式。

相关内容