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

643
BANG

Сначала я задал этот вопрос о графическом дизайне ... С тех пор я смог учиться; и использовать тот факт, что программа, с которой я не был знаком (ImageMagick), имеет возможность выводить значения RGB в имя файла, используя следующее:

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

Поэтому я сделал этот шаг, и это сработало. Перейдем к заданию этого вопроса здесь. У меня есть папка с файлами изображений, состоящими из одного цвета. Я смог использовать ImageMagick, как показано выше, чтобы изменить имена файлов в соответствии с цветами, содержащимися в соответствующих изображениях. Вот скриншот из папки:

RGB Decimal Filenames

Мой единственный вопрос: как я могу преобразовать имена файлов из десятичной формы в шестнадцатеричные?

Так, например, я хотел бы, чтобы имена файлов были изменены с "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.
0
Обратите внимание, что https://superuser.com не является бесплатным сервисом для написания скриптов / кодов. Если вы сообщите нам, что вы уже пробовали (включая скрипты / код, который вы уже используете) и где вы застряли, мы можем попытаться помочь с конкретными проблемами. Вам также следует прочитать [Как мне задать хороший вопрос?] (Https://superuser.com/help/how-to-ask). DavidPostill 6 лет назад 3

2 ответа на вопрос

1
Cory Knutson

С Powershell вы можете:

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

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

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

Спасибо за ответ! Я надеялся на что-то более автоматизированное. Слишком много файлов, чтобы пройти один за другим, как это BANG 6 лет назад 0
Да, это все шаги в сценарии. Вам просто нужно заполнить переменные, чтобы передать кусочки. Cory Knutson 6 лет назад 0
1
Matt D

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

Спасибо за ответ! Похоже, это было бы легким решением ... но я не мог заставить его что-либо делать. Я думаю, что я, вероятно, неправильно вводил часть каталога при замене ' BANG 6 лет назад 0
@BANG это сработало для меня. Что происходит, когда вы запускаете скрипт? Matt D 6 лет назад 0
@BANG Вы также можете рассмотреть возможность принятия этого ответа, щелкнув по серой галочке, так как он отвечает на вопрос =) Matt D 6 лет назад 0
Я обязательно приму ваш ответ, если смогу заставить его работать. Когда я запускаю его (в консоли Python) с моим каталогом, введенным точно так же, как в моем комментарии выше (включая одинарные кавычки), это, похоже, ничего не делает. Нужно ли включать одинарные кавычки? Нужно ли вводить маленький символ <, как у вас в BANG 6 лет назад 0
Да, вам нужны кавычки, и нет, вы не используете <. Честно говоря, чувак, я не могу научить тебя питону. Я написал весь сценарий для вас. Matt D 6 лет назад 0
Попробуйте зайти в каталог с вашими файлами и запустить скрипт с ./ в качестве вашего каталога. Возможно, вы неправильно написали каталог. Matt D 6 лет назад 0
LOL, спасибо, чувак, я все равно нашел рабочее решение этой проблемы [ссылка] (https://graphicdesign.stackexchange.com/q/92483/94601) Я не ожидаю, что ты научишь меня Python man. Я говорил тебе, твой сценарий не работает. Если вы не используете «<», то почему это было там? Во всяком случае, я попробовал это в обе стороны, и ничего не получилось. Проверка орфографии? ** Вы ** - - - Я не написал неправильный путь к каталогу - у меня есть правая кнопка «Копировать путь». Спасибо за попытку. BANG 6 лет назад 0

Похожие вопросы