Как пакетное преобразование имен файлов из десятичных в шестнадцатеричные цветовые коды?
Сначала я задал этот вопрос о графическом дизайне... С тех пор я смог учиться; и использовать тот факт, что программа, с которой я не был знаком (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 в этом каталоге находятся в указанном вами формате.