Sollten Dateien mit der Dateierweiterung „hdr“ mit Zeilenumbruchzeichen enden?

Sollten Dateien mit der Dateierweiterung „hdr“ mit Zeilenumbruchzeichen enden?

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- fileBefehl 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 hdrDateien 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 #?RADIANCEund dann mehreren Zeilen, die die Befehle auflisten, die zum Generieren des Bildes verwendet wurden. […] Es gibt auch key=valueDeklarationen, einschließlich der Zeile FORMAT=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 .hdrDatei ( 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 .hdrDatei keinen Zweck. Man möchte vielleicht fehlende Zeilenumbrüche hinzufügen, um eine derPOSIX-Anforderungen bezüglich Textdateien, aber .hdrDateien sind von vornherein keine Textdateien. Es gibt nichts zu ändern.


Antworten auf die expliziten Fragen:

Sollen Dateien mit der hdrDateierweiterung 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 0x0ajedoch mit Bytes enden. Als Teil binärer Pixeldaten 0x0asollten 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 .hdrDateien auszuschließen?

Ich denke, das sollten Sie. Ich würde es tun. Und ich würde mich lieber auf den fileBefehl verlassen, nicht auf die Erweiterung.

verwandte Informationen