Ich glaube zwar einiges an Hilfe und Tutorials gelesen zu haben aber etwas Grundlegendes dürfte ich übersehen zu haben. Ich hoffe irgendjemand kann mir helfen. Ich möchte eine Menge JPG-Files untersuchen die nicht DPI 72/72 haben. Schien einfach mit Regexp zu lösen sein. Bin dabei auf folgendes Problem gestoßen. Ich wollte Bytes 15-16 und 17-18 enthaltene Werte auslesen.
(In Byte 14 wird definiert in welchen Maßeinheiten die Werte sind also Byte 14=0x01 steht für "Dots per Inch" wenn =0x02 dann sind die Werte "Dots per cm")
Hier ein kleines Script zur Veranschaulichung:
#include <string.au3>
;AutoItSetOption("MustDeclareVars", 1)
Global $HexDisplay = 1
#Tidy_Parameters= /tc=0 /pr=1 /uv=3 /rel=0 /reel=1 /gd=1 /scb /nsdp
Dim $i, $sW[4], $aW[10]
$sW[1] = _HexToString("FFD8FFE000104A46494600010101012C012C") ; DPI 300x300
$sW[2] = _HexToString("FFD8FFE000104A4649460001010100480048") ; DPI 72x72
$sW[3] = _HexToString("FFD8FFE000104A46494600010102001C001C") ; DPcm 28x28 =28*2,54 ~ 71[,12]
;$aFil = _FileListToArray($dirI, "??????_1_??.jpg", 1)
;For $i = 1 To UBound($aFil, 1) - 1 ; [0]=number of elements
For $i = 1 To UBound($sW, 1) - 1
;$sW[$i] = FileRead($dirI & $aFil[$i], 18)
$aW = StringRegExp($sW[$i], "(?s).{13}(?s)(.)(?s)(..)(?s)(..)", 3)
MsgBox(64, "Mit RegExp:", _
@CRLF & " 14,1 :" & _Stringtohex($aW[0]) _
& @CRLF & " 15,2 :" & _Stringtohex($aW[1]) _
& @CRLF & " 17,2 :" & _stringtohex($aW[2]) _
)
;============ so geht es =============================
$aW[0] = _StringToHex(StringMid($sW[$i], 14, 1))
$aW[1] = Dec(_StringToHex(StringMid($sW[$i], 15, 2)))
$aW[2] = Dec(_StringToHex(StringMid($sW[$i], 17, 2)))
MsgBox(64, "Mit StringMid:", _
@CRLF & " 14,1 :" & $aW[0] _
& @CRLF & " 15,2 :" & $aW[1] _
& @CRLF & " 17,2 :" & $aW[2] _
)
Next
Exit
Alles anzeigen
Bei StringRegExp gehen Werte kleiner 256 verloren, da dieser String mit 0x00 beginnt, also mein $aW[1] endet offensichtlich vor 0x00, also Länge = 0. Hingegen "StringMid" liefert korrekt 2 Bytes als 0x0048, also 72.
Handelt es hier um einen Fehler oder sind die Definitionen für String verschieden?
P.S: Übrigens mein Vorschlag, "Feature Request Ticket#1889" auf https://autoit.de/www.autoitscript.com, welches hier sehr hilfreich gewesen wäre, wurde aber abgelehnt.