2012-05-19 25 views
5

Es gibt ein Bild im String-Format, Ausgabe dieser Zeichenfolge mit einigen Mime-Typ-Header würde ausreichen, um es auf einer Seite zu rendern, wie überprüft man, ob diese Zeichenfolge ein Bild ist?überprüfen, ob die Zeichenfolge Bild ist

+0

von "String-Format" do you base64 bedeuten? Wenn ja, sollten Sie in die Bibliotheken für magische Zahlen schauen. (Die gebräuchlichste davon wird einfach "Magie" genannt.) – OmnipotentEntity

Antwort

9

"Eine Bildressource wird bei Erfolg zurückgegeben. FALSE wird zurückgegeben, wenn der Bildtyp nicht unterstützt wird, die Daten nicht in einem erkannten Format vorliegen oder das Bild beschädigt ist und nicht geladen werden kann."

Beispiel:

<?php 
$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl' 
     . 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr' 
     . 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r' 
     . '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg=='; 
$data = base64_decode($data); 

$im = imagecreatefromstring($data); 
if ($im !== false) { 
    header('Content-Type: image/png'); 
    imagepng($im); 
    imagedestroy($im); 
} 
else { 
    echo 'An error occurred.'; 
} 
?> 

http://php.net/manual/en/function.imagecreatefromstring.php

+1

Sie müssen Fehler mit '@' unterdrücken, sonst sind Sie für das 'imagecreatefromstring()' verdammt. – Niranjan

+0

@ngen Irgendein Weg um zu vermeiden, verloren zu gehen und gleichzeitig @ zu vermeiden? –

+0

@ YuriKolovsky Sie können nicht. Da Sie versuchen, eine Zeichenfolge in eine Funktion zu laden, die ein Bild erwartet. Es wird fehlschlagen 1) wenn die Bilddaten beschädigt sind. 2) wenn es kein Bild ist. – Niranjan

Verwandte Themen