2016-08-05 49 views
1

Ich habe eine Kamera, die mir eine XML-Datei mit einigen Tags senden, einschließlich eines Tags, das das Bild im Base64-Format darstellt. Das Bild ist im JPEG-Format.JPEG-Bild im Base64-Format

Aus irgendeinem Grunde des Tag, das das Bild darstellt, ist es nicht immer den gleichen Namen hat (für ein Problem der Kamera)

Also mit Sicherheit den Tag zu erkennen, die das Bild enthält, ist richtig, ich habe zu jetzt eine Sache:

Ein JPEG-Bild im base64-Format IMMER mit/9j /?

Beispiel:

data:image/jpeg;base64,-->/9j/<--4RYQRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAgAAAAcgEyAAIAAAAUAAAAkodpAAQAAAABAAAAqAAAANQACvyAAAAnEAAK/IAAACcQQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKQAyMDE2OjA4OjA1IDA5OjQ1OjA4AAAAAAOgAQADAAAAAf//AACgAgAEAAAAAQAAAPGgAwAEAAAAAQAAAFkAAAAAAAAABgEDAAMAAAABAAYAAAEaAAUAAAABAAABIgEbAA.... 

Antwort

3

JPEG-Dateiformat (wie viele andere) können durch magische Zahl identifiziert werden. Für JPEG ist die magische Zahl ff d8 ff bei Offset 0. Wenn Sie dies in Base64 kodieren, erhalten Sie immer /9j/.

Hinweis: Da Base64 eine Gruppe von 3 Datenbytes in 4 Bytes (ASCII) konvertiert, funktioniert dies für jede magische Zahl mit einer Länge und einem Offset-Vielfachen von 3 Bytes. Wenn die Länge der magischen Zahl nicht Vielfaches von 3 ist, ändert sich die letzte Gruppe von 4 Base-64-kodierten Zeichen abhängig von den Daten, die unmittelbar auf die magische Zahl folgen.

https://en.wikipedia.org/wiki/JPEG

https://en.wikipedia.org/wiki/List_of_file_signatures