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

2 ответа2

1

С Powershell вы можете:

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

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

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

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .