Hallo zusammen,
ich habe eine kurze Frage: ich schreibe gerade ein kleines Programm, das JPEGs analysieren soll. Laut Wikipedias JPEG-Seite muss ein JPEG mit FF und D9 enden.
ich habe eine kurze Frage: ich schreibe gerade ein kleines Programm, das JPEGs analysieren soll. Laut Wikipedias JPEG-Seite muss ein JPEG mit FF und D9 enden.
- die JPEGs, die durch Screenshots zustande gekommen sind, enden auch so. Die Screenshots wurden durch den PC erstellt.
- die JPGEGs, die durch mein Smartphone erstellt wurden, enden jedoch mit 70d und 84d. Ich finde dafür keine Erklärung. Hat das etwas mit Metadaten zu tun?
- • hier wird auch keine Kombination von {&HFF, &HD9} gefunden.
Zeile28
VB.NET-Quellcode
- Private Sub Button_Start_Click(sender As Object, e As EventArgs) Handles Button_Start.Click
- If System.String.IsNullOrEmpty(file_path) Then Return
- Dim mySize As Long = My.Computer.FileSystem.GetFileInfo(file_path).Length
- Label1.Text = CType(Math.Round(mySize / 1024.0, 0), String) & " kB"
- If mySize > Int32.MaxValue Then Return 'Overflow vermeiden
- Dim buffer(CInt(mySize - 1)) As Byte
- Dim Anzahl_gelesene_Bytes As Integer
- Using FS As New System.IO.FileStream(file_path, IO.FileMode.Open, IO.FileAccess.Read)
- Anzahl_gelesene_Bytes = FS.Read(buffer, 0, buffer.Length)
- End Using
- If buffer(0) = 255 AndAlso buffer(1) = 216 Then
- Label2.Text = "JPEG"
- Else
- Label2.Text = "Kein JPEG"
- Return
- End If
- If buffer(buffer.Length - 2) = 255 AndAlso buffer(buffer.Length - 1) = 217 Then 'EOI
- Label3.Text = "endet gewöhnlich"
- Else
- Label3.Text = "endet nicht gewöhnlich" 'ist "endet nicht gewöhnlich" überhaupt die richtige Formulierung?
- If buffer.SequenceEqual({&HFF, &HD9}) Then
- Debug.WriteLine("")
- End If
- End If
- End Sub
An die Neulinge: Nutzt
Option Strict On
und Option Infer Off
. Dadurch kommt ihr mit Datentypumwandlungen nicht durcheinander und der Code verbessert sich um Einiges! Solche Fehler à la Dim Beispiel As Integer = "123" können nicht mehr passieren.