Wie kann ich Batch-Konvertierungen von Dateinamen von Dezimal- in Hex-Farbcodes durchführen?

733
BANG

Ich habe diese Frage zuerst zu Graphic Design gestellt ... Seitdem konnte ich lernen; und die Tatsache zu nutzen, dass ein Programm, mit dem ich nicht vertraut war (ImageMagick), die Möglichkeit hat, RGB-Werte unter Verwendung des folgenden Befehls in den Dateinamen auszugeben:

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

Also habe ich diesen Schritt getan und es hat funktioniert. Schneller Vorlauf zur Fragestellung hier. Ich habe einen Ordner mit Bilddateien, die aus einer einzigen Farbe bestehen. Ich konnte ImageMagick wie oben gezeigt verwenden, um die Dateinamen entsprechend den in den jeweiligen Bildern enthaltenen Farben zu ändern. Hier ist ein Screenshot aus dem Ordner:

RGB Decimal Filenames

Meine einzige Frage ist: Wie kann ich die Dateinamen von Dezimalform in Hex konvertieren?

Ich möchte zum Beispiel, dass die Namen der Dateien von "rgb (13,12,12) .png" in den entsprechenden Hex-Farbcode geändert werden: "0D0C0C.png".

Dies stellt sich als schwieriger heraus, als ich gehofft hatte ... Ein Windows-Cmd-Skript oder ein BAT, das ich ausführen könnte, wäre ideal. Kann mir hier jemand evtl. helfen, das zu schaffen?

  • Ich bin unter Windows 10 und habe GOW (GNU On Windows) installiert, was mir das folgende * nix-Tool ermöglicht, das hier aufgelistet ist .
    Anmerkung des Herausgebers: Die Liste enthält die folgenden Programme, die (IMO) nützlich sein könnten: sed, bash, bc, dc, expr, printf (und natürlich mv) - aber vor allem nicht awk.
0
Bitte beachten Sie, dass https://superuser.com kein kostenloser Skript- / Code-Schreibservice ist. Wenn Sie uns sagen, was Sie bisher versucht haben (einschließlich der Skripts / des Codes, die Sie bereits verwenden) und wo Sie stecken bleiben, können wir versuchen, bei bestimmten Problemen zu helfen. Sie sollten auch lesen [Wie kann ich eine gute Frage stellen?] (Https://superuser.com/help/how-to-ask). DavidPostill vor 6 Jahren 3

2 Antworten auf die Frage

1
Cory Knutson

With Powershell, you could:

  • use "rgb(13,12,12).png" -replace "rgb(","" to strip the first four
  • use "13,12,12).png" -replace ").png","" to strip the closing
  • use "13,12,12" -split "," to separate the pieces
  • use "" -f 13 to convert 13 to hex

This should get you started.

If you get stuck on a particular part of this, you can update your question.

Danke für die Antwort! Ich habe auf etwas Automatisiertes gehofft. Es gibt zu viele Dateien, um nacheinander auf diese Weise durchzugehen BANG vor 6 Jahren 0
Ja, das sind alles Schritte in einem Skript. Sie müssen nur die Variablen eingeben, um die Teile zu übergeben. Cory Knutson vor 6 Jahren 0
1
Matt D

Your question doesn't specify what kind of script you want to do this with. You can use 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) 

This assumes that all the png files in that directory are in the format you specified.

Danke für die Antwort! Das klingt nach einer einfachen Lösung ... aber ich konnte nichts dazu bringen. Ich glaube, ich habe wahrscheinlich den Verzeichnis-Teil falsch eingegeben BANG vor 6 Jahren 0
@BANG es hat für mich funktioniert. Was passiert, wenn Sie das Skript ausführen? Matt D vor 6 Jahren 0
@BANG Sie können diese Antwort auch akzeptieren, indem Sie auf das graue Häkchen klicken, da die Frage beantwortet wird =). Matt D vor 6 Jahren 0
Ich werde Ihre Antwort auf jeden Fall akzeptieren, wenn ich es schaffen kann. Wenn ich es (in der Python-Konsole) mit meinem Verzeichnis genau so ausführen, wie es in meinem Kommentar oben steht (mit einfachen Anführungszeichen), scheint es überhaupt nichts zu tun. Muss ich die einfachen Anführungszeichen angeben? Muss ich das kleine Symbol eingeben, wie Sie es in ' BANG vor 6 Jahren 0
Ja, Sie brauchen die Anführungszeichen und nein, Sie verwenden nicht die <. Ehrlich, Alter, ich kann dir Python nicht beibringen. Ich habe das ganze Skript für Sie geschrieben. Matt D vor 6 Jahren 0
Versuchen Sie, mit Ihren Dateien in das Verzeichnis zu gelangen, und führen Sie das Skript mit ./ als Verzeichnis aus. Sie haben wahrscheinlich das Verzeichnis falsch geschrieben. Matt D vor 6 Jahren 0
LOL danke 'Kumpel' Ich habe trotzdem eine funktionierende Lösung für dieses Problem gefunden [link] (https://graphicdesign.stackexchange.com/q/92483/94601) Ich erwarte nicht, dass Sie mir den Python-Mann beibringen. Ich habe dir gesagt, dass dein Skript nicht funktioniert hat. Wenn Sie das "<" nicht verwenden, warum war es dann dort? Jedenfalls habe ich es in beide Richtungen versucht und es hat nichts getan. Rechtschreibung? ** Sie sind ** - - - Ich habe den Verzeichnispfad nicht falsch geschrieben. Ich habe die Funktion "Pfad kopieren" mit der rechten Maustaste. Danke für die Mühe. BANG vor 6 Jahren 0