2013-03-07 42 views
0

我要驗證的圖像原始數據是否有效不驗證圖像的原始數據。要使用PHP

下面是我的代碼:

private function __blobToImage($imagerawdata) 
{  
    $imagedata = base64_decode($imagerawdata); 
    // Set the content type header - in this case image/jpeg 
    header('Content-Type: image/jpeg'); 

    $path = WWW_ROOT . "commapp_images".'/'; 
    $file = mktime().".png"; 
    $filepath = $path.$file; 

    // Output the image  
    $image = imagecreatefromstring($imagedata); 
    ob_start(); 
    imagejpeg($image, $filepath, 80); 
    ob_get_contents(); 
    ob_end_clean(); 
    return $file; 
} 

在使用我的代碼,我發現了以下錯誤

"Notice (8): imagecreatefromstring() [function.imagecreatefromstring]: gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file" 

任何一個請幫助我,因爲我在這裏strucked與任何解決方案。

+0

哪裏編碼數據($ imagerawdata)從何而來? – sofl 2013-03-07 14:24:19

回答

1

imagecreatefromstring已經這樣做,它返回false失敗。所以,你可以抑制它的消息,並檢查返回值:

$image = @imagecreatefromstring($imagedata); 
if ($image !== false) 
{ 
    ... 
} 

編輯:如果您正在保存到一個文件你不需要header和輸出緩衝和您要保存JPEG與PNG延期。

+0

嗨,我總是獲得成功,但圖像保存爲空白圖像。但它引發錯誤「通知(8):imagecreatefromstring()[function.imagecreatefromstring]:GD-JPEG,libjpeg的:恢復的錯誤:JPEG文件過早結束」 – 2013-03-07 14:20:50

+0

@VineelaYarlagadda不知道這是相關的,但你將jpeg保存爲png文件。你應該改變你正在呼叫的分機或功能。 – jeroen 2013-03-07 14:22:47