Bildtyp von Base64-String in PHP erkennen
Ist es möglich, herauszufinden, die Art der ein Bild kodiert als base64-String in PHP?
Habe ich keinen Zugriff auf den original-Bild-Datei, nur die codierte Zeichenfolge. Von dem, was ich gesehen habe, imagecreatefromstring()
können, erstellen Sie eine Bild-Ressource aus einer string-Repräsentation (nachdem es entschlüsselt von base64), aber es erkennt automatisch den Bildtyp und das Bild Ressource selbst ist eine spezielle PHP-Darstellung. Falls ich wollen speichern Sie das Bild als eine Datei wieder, ich hätte keine Ahnung, ob der Typ, ich bin fertig, es entspricht den ursprünglichen Typ, von dem die String-Darstellung erstellt wurde.
InformationsquelleAutor der Frage Epicurus | 2011-05-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
FileInfo kann das für Sie tun:
InformationsquelleAutor der Antwort Marc B
Wenn Sie nicht wollen, um diese Funktionen zu verwenden, da Ihre Abhängigkeiten können Sie die ersten bytes der Daten:
InformationsquelleAutor der Antwort Aaron Murgatroyd
Die Lösung gegeben durch @Marc B ist am besten für mich (wenn unsere php version > 5.3.0 sonst können wir die Lösung gegeben durch @Aaron Murgatroyd).
Ich würde gerne eine kleine Ergänzung zu dieser Lösung.
, Um das image type können Sie es so machen :
In der Tat (wenn Sie es nicht wissen) der mime-Typ für Bilder ist : Bild/Typ und Typ werden können png-oder gif-oder jpeg oder ...
Hoffe, dass kann jemand helfen und danke an @Marc B für seine Lösung.
Für eine vollständige Liste der mime-Typ kann man hier betrachten :
InformationsquelleAutor der Antwort youssman
Den Weg gezeigt, indem Sie @Marc B am schönsten.
Sollte
FInfo
nicht verfügbar sein, ist die einzige andere Möglichkeit, die ich kenne ist das speichern von Daten in eine Datei, und führen Sie einengetimagesize()
.InformationsquelleAutor der Antwort Pekka 웃
Wenn Sie wissen, eine minimale Menge über das Dateiformat, Struktur, theoretisch könnten Sie an der Spitze sehen bytes der Datei, bis Sie können, welche Art von Datei es ist.
Beispielsweise ein GIF-Bild beginnt immer mit der folgenden bytes
GIF89a
. Wenn Sie finden können, dass der string am Anfang der Datei, können Sie ziemlich sicher sein, dass es ein GIF-Bild, das absolut sicher ist nicht jedes andere Bild-format. (es könnte noch eine text-Datei, obwohl, dass passiert einfach zu starten mit "GIF89a"; Sie müssten, um zu analysieren, mehr von der Datei, um absolut sicher)Ebenfalls, PNG-Dateien, die die Zeichenfolge
PNG
ziemlich am Anfang (es ist nicht ganz die ganz am Anfang; wieder, würden Sie brauchen, um Forschung, die Datei-format Besonderheiten zu helfen, Sie bestimmen, wie viel Sie brauchen würde, um zu wissen, sicher zu sein).JPEGs enthalten auch erkennbare Zeichenfolgen im Header, obwohl diese sind vielfältiger und komplexer. Vielleicht möchten Sie sich für den string
Exif
.Bekommen Sie die Datei-format-Definitionen würde definitiv geben Ihnen mehr Genauigkeit, aber je nachdem wie genau Sie sein müssen, könnte Sie lernen, genug über die Dateien-Formate nur durch das öffnen von Bild-Dateien in einen Binär-editor, um zu sehen, wie Sie sind strukturiert.
Diese Ressourcen können Ihnen helfen:
http://www.w3.org/Graphics/JPEG/
http://www.w3.org/Graphics/PNG/
InformationsquelleAutor der Antwort Spudley