Meta-Angaben aus Bild auslesen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Sterbendes Lüftlein

Betreff: Meta-Angaben aus Bild auslesen

BeitragSo, Jun 26, 2011 10:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

ZEVS

BeitragFr, Jul 01, 2011 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja: ReadFile. Allerdings ist es ein bisschen komplex, so an die Daten zu kommen. Ich habe mir mal eine Lösung für PNG gesucht:
BlitzBasic: [AUSKLAPPEN]
Function getPNGLastModified$(file$)
If FileType(file) <> 1 Then RuntimeError file+" is not a file"
Local stream = ReadFile(file)
SeekFile stream, 8 ;skip Signature (hope the file to be PNG)
While Not Eof(stream)
Local chunkLength = getInt(stream)
Local chunkName$ = Chr(ReadByte(stream))+Chr(ReadByte(stream))+Chr(ReadByte(stream))+Chr(ReadByte(stream))
;natürlich auf einer Zeile
If Lower(chunkName) = "time" Then ;chunk found! parse it
Local year = getShort(stream)
Local month = ReadByte(stream)
Local day = ReadByte(stream)
Local hour = ReadByte(stream)
Local minute = ReadByte(stream)
Local secound = ReadByte(stream)
Return day+"."+month+"."+year+" "+hour+":"+minute
EndIf
For i=1 To chunkLength;skip chunk
ReadByte stream
Next
ReadInt stream ;skip CRC (hope that everything is OK)
Wend
Return ""
End Function

Function getInt(stream) ;Blitz' Ints are else then PNG's
Return ReadByte(stream)*2^24+ReadByte(stream)*2^16+ReadByte(stream)*2^8+ReadByte(stream)
End Function

Function getShort(stream) ;Shorts also
Return ReadByte(stream)*2^8+ReadByte(stream)
End Function



; and a test
Local time$ = getPNGLastModified("test.png")

Print time

Local timer = CreateTimer(1)

For i=1 To 3 ;wait 3 secounds
WaitTimer timer
Next

End


Empfehlenswert: Aufbau einer PNG-Datei,
Die Chunks im Einzelnen (auch tIME)


Für JPEG braucht man entsprechend eine andere Funktion

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group