Ik wil een programmaatje maken in C dat de lengte en de hoogte van een jpg bestand leest. Ik heb gevonden dat ik daarvoor een SOF (start of frame) marker moet vinden. En die marker is een twee-byte code, ffcx (met voor x=0 tot 3).
(dit staat op http://mini.net/tcl/757.html). Dit snap ik dus niet echt. Ik weet niet zoveel van C en ik heb altijd geleerd dat elk karakter één byte is, dus hoe kan ffcx nou maar uit twee bytes bestaan? En hoe kan ik dat bijvoorbeeld de byte ff zoeken? (ik weet dus wel hoe ik bijvoorbeeld het karakter f kan zoeken en ook twee keer het karakter f, maar ff in één byte dat snap ik dus niet). Op http://mini.net/tcl/757.html staat wel een TCL script dat dit doet, maar daar snap ik ook niet zo veel van. Dit is dat scriptje:
proc GetJPGDimensions { filename } {
set fd [ open $filename ]
fconfigure $fd -translation binary
set ch1 "00"
while { ! [ eof $fd ] } {
binary scan [ read $fd 1 ] "H2" ch2
if { ( $ch1 == "ff" ) && ( $ch2 >= "c0" ) && ($ch2 <= "c3" ) } {
binary scan [ read $fd 7 ] "x3SS" height width
return [ list $height $width ]
}
set ch1 $ch2
}
error "Couldn't find JPG header for $filename"
}
Ik hoop dat er iemand wil antwoorden, want ik ben nu al de hele dag aan het klooien en ik kom er echt niet uit.
Alvast bedankt.
(dit staat op http://mini.net/tcl/757.html). Dit snap ik dus niet echt. Ik weet niet zoveel van C en ik heb altijd geleerd dat elk karakter één byte is, dus hoe kan ffcx nou maar uit twee bytes bestaan? En hoe kan ik dat bijvoorbeeld de byte ff zoeken? (ik weet dus wel hoe ik bijvoorbeeld het karakter f kan zoeken en ook twee keer het karakter f, maar ff in één byte dat snap ik dus niet). Op http://mini.net/tcl/757.html staat wel een TCL script dat dit doet, maar daar snap ik ook niet zo veel van. Dit is dat scriptje:
proc GetJPGDimensions { filename } {
set fd [ open $filename ]
fconfigure $fd -translation binary
set ch1 "00"
while { ! [ eof $fd ] } {
binary scan [ read $fd 1 ] "H2" ch2
if { ( $ch1 == "ff" ) && ( $ch2 >= "c0" ) && ($ch2 <= "c3" ) } {
binary scan [ read $fd 7 ] "x3SS" height width
return [ list $height $width ]
}
set ch1 $ch2
}
error "Couldn't find JPG header for $filename"
}
Ik hoop dat er iemand wil antwoorden, want ik ben nu al de hele dag aan het klooien en ik kom er echt niet uit.
Alvast bedankt.