Ich schreibe ein Skript, das die Dateiformatierung erzwingt. Unter anderem sorgt es dafür, dass alle Textdateien mit Zeilenumbruchzeichen enden.
Bei Dateien bin ich mir in einem Bereich nicht sicher .hdr
. Das sind Bilder, der Linux- file
Befehl sagt, dass sie es sind Radiance HDR image data
, aber sie können mit einem Texteditor geöffnet werden, und das Skript interpretiert sie als Textdateien. Daher fügt das Skript diesen Dateien automatisch Zeilenumbrüche hinzu.
Ist das eine gute Sache? Wie wird dieser Dateityp verwendet? Gibt es einen Anwendungsfall, bei dem diese Bilddateien als Text gelesen werden? Gibt es irgendwelche Nachteile, wenn diese Dateien mit Zeilenumbruchzeichen enden? Sollte ich meinem Skript eine Ausnahme hinzufügen, um hdr
Dateien auszuschließen?
Antwort1
Das Skript fügt diesen [ ]-Dateien automatisch Zeilenumbrüche hinzu
.hdr
. Ist das eine gute Sache?
Nein. Aber es ist wahrscheinlich auch nicht schlecht. Zum Format [Hervorhebung von mir]:
Die Datei beginnt mit der Signatur
#?RADIANCE
und dann mehreren Zeilen, die die Befehle auflisten, die zum Generieren des Bildes verwendet wurden. […] Es gibt auchkey=value
Deklarationen, einschließlich der ZeileFORMAT=32-bit_rle_rgbe
.Danach folgt eine leere Zeile, die das Ende des Headers markiert. Eine einzelne Zeile beschreibt die Auflösung und die Pixelreihenfolge. Wie von den Radiance-Tools erzeugt, hat dies immer die Form
-Y height +X width
. Nach dieser Zeile folgt derBinäre Pixeldaten.
(Quelle)
Ich habe eine .hdr
Datei ( nancy_church_1.hdr
) heruntergeladen vonDiese Seite. Ich habe einer Kopie eine neue Zeile hinzugefügt und sogar eine weitere Datei angehängt. Ich habe es mit getestet luminance-hdr
, das Tool hat sich nicht beschwert.
Das überrascht mich nicht. Die Auflösung ist bekannt; lautdiese BeschreibungEs gibt vier Bytes pro Pixel und selbst wenn eine Lauflängencodierung (RLE) verwendet wird, ist es immer noch leicht zu erkennen, wann die Interpretation der binären Pixeldaten beendet werden muss. Und es gibt keine Fußzeile, die wir beschädigen könnten.
Andere Tools wiederum beschweren sich möglicherweise, vielleicht aber auch nicht.
Auch wenn es harmlos ist, hat das Hinzufügen eines Zeilenumbruchzeichens zu einer .hdr
Datei keinen Zweck. Man möchte vielleicht fehlende Zeilenumbrüche hinzufügen, um eine derPOSIX-Anforderungen bezüglich Textdateien, aber .hdr
Dateien sind von vornherein keine Textdateien. Es gibt nichts zu ändern.
Antworten auf die expliziten Fragen:
Sollen Dateien mit der
hdr
Dateierweiterung mit einem Zeilenumbruchzeichen enden?
Aus semantischen Gründen eine etwas knifflige Frage. Nein, sie sollten nicht mit Zeichen enden, die als Zeilenumbrüche interpretiert werden. Sie können 0x0a
jedoch mit Bytes enden. Als Teil binärer Pixeldaten 0x0a
sollten diese nicht als Zeilenumbrüche interpretiert werden.
Wie wird dieser Dateityp verwendet?
Als Grafik.
Gibt es einen Anwendungsfall, bei dem diese Bilddateien als Text gelesen werden können?
Sie können den Header und die Zeile lesen, die die Auflösung und die Pixelreihenfolge beschreibt. Sie sollten nicht versuchen, dieganzDatei als Text.
Gibt es Nachteile, wenn diese Dateien mit Zeilenumbruchzeichen enden?
Es besteht die Möglichkeit, dass die Dateien mehr Blöcke im Dateisystem belegen. Abgesehen davon ist es schwer zu sagen, einige Tools könnten sich beschweren. Es gibt keine Vorteile, Sie können also nur alles verschlechtern oder gleich machen.
Soll ich meinem Skript eine Ausnahme hinzufügen, um
.hdr
Dateien auszuschließen?
Ich denke, das sollten Sie. Ich würde es tun. Und ich würde mich lieber auf den file
Befehl verlassen, nicht auf die Erweiterung.