Как пакетное преобразование имен файлов из десятичных в шестнадцатеричные цветовые коды?

Сначала я задал этот вопрос о графическом дизайне... С тех пор я смог учиться; и использовать тот факт, что программа, с которой я не был знаком (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 На Windows), который предоставляет мне следующий *nix инструмент, перечисленный здесь.
    Примечание редактора: список включает в себя следующие программы, которые (IMO) могут быть полезны: sed, bash, bc, dc, expr, printf (и, конечно, mv) - но, в частности, не awk.

2 ответа

С Powershell вы можете:

  • использование "rgb(13,12,12).png" -replace "rgb(","" раздеть первые четыре
  • использование "13,12,12).png" -replace ").png","" раздеть закрытие
  • использование "13,12,12" -split "," отделить кусочки
  • использование "{0:x}" -f 13 конвертировать 13 в гекс

Это должно начать вас.

Если вы застряли на определенной части этого, вы можете обновить свой вопрос.

В вашем вопросе не указано, с каким сценарием вы хотите это сделать. Вы можете использовать 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 в этом каталоге находятся в указанном вами формате.

Другие вопросы по тегам