2012-05-19 249 views
5

有字符串格式的圖像,輸出一些MIME類型標頭字符串就足以使其在頁面上,如何檢查,如果該字符串是一個形象?檢查如果字符串是圖像

+0

通過 「字符串格式」 你說的base64?如果是這樣,你應該看看魔術數字庫。 (最常見的這些被簡單地稱爲「法寶」。) – OmnipotentEntity

回答

9

「的圖像資源將在成功返回。如果圖像類型是不支持的返回FALSE,數據不是可識別的格式,或圖像已損壞,無法加載。」

例子:

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

則需要使用抑制錯誤「@」,否則你註定爲'imagecreatefromstring()'。 – Niranjan

+0

@ngen任何方式來避免被註定,並在同一時間忌用@? –

+0

@YuriKolovsky你不能。由於您正在嘗試將字符串加載到期待圖像的函數中。它會失敗1)如果圖像數據損壞。 2)如果它不是圖像。 – Niranjan

相關問題