2012-05-19 3 views
5

Il y a une image au format chaîne, sortir cette chaîne avec certains en-têtes de type mime suffirait à la rendre sur une page, comment vérifier si cette chaîne est une image?vérifier si la chaîne est l'image

+0

Par "format string" voulez-vous dire base64? Si oui, vous devriez regarder dans les bibliothèques de nombres magiques. (Le plus commun d'entre eux est simplement appelé "magie".) – OmnipotentEntity

Répondre

9

"Une ressource d'image sera renvoyée en cas de succès FALSE est renvoyée si le type d'image n'est pas pris en charge, si les données ne sont pas reconnues ou si l'image est corrompue et ne peut pas être chargée.

Exemple:

<?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

Vous devez supprimer les erreurs en utilisant '@' sinon vous êtes condamné pour cela 'imagecreatefromstring()'. – Niranjan

+0

@ngen Un moyen d'éviter d'être condamné et en même temps éviter d'utiliser @? –

+0

@YuriKolovsky Vous ne pouvez pas. Puisque vous essayez de charger une chaîne dans une fonction qui attend une image. Cela échouera 1) si les données de l'image sont corrompues. 2) si ce n'est pas une image. – Niranjan

Questions connexes