2012-03-15 65 views
-1

你好,我是新來的Facebook應用程序開發和工作,我的第一個應用程序。 我的應用程序包含檢索用戶個人資料圖片並將其與另一張圖片合併的功能。類型轉換期間失去質量和顏色的圖片

問題是facebook將返回的個人資料圖片的圖片格式無法確定learned it here,因此我決定將.gif保留爲默認文件類型並創建條件以檢查類型,然後將任何格式轉換爲.gif格式,因此可以進一步使用。

但問題是,在轉換過程中,圖片的質量會有很大程度的下降,這在理想情況下當然是不可接受的。

// Create image instances 
$url = "http://graph.facebook.com/{$userId}/picture?type=large"; 
$dpImage = 'temp/' . $userId . '_dpImage_' . rand(); 
file_put_contents($dpImage, file_get_contents($url)); 
$dpImageGif = 'temp/' . $userId . '_dpImageGif_' . rand() . '.gif'; 

if (exif_imagetype($dpImage) == IMAGETYPE_GIF) { 
$imageObject = imagecreatefromgif($dpImage); 
} 
if (exif_imagetype($dpImage) == IMAGETYPE_JPEG) { 
$imageObject = imagecreatefromjpeg($dpImage); 
} 
if (exif_imagetype($dpImage) == IMAGETYPE_PNG) { 
$imageObject = imagecreatefrompng($dpImage); 
} 
imagegif($imageObject, $dpImageGif); 

$src = imagecreatefromgif($dpImageGif); 
$dest = imagecreatefromgif($textImage); 

$dst_x = 3; 
$dst_y = 69; 
$src_x = 0; 
$src_y = 0; 
$src_w = imagesx($imageObject); 
$src_h = imagesy($imageObject); 
$pct = 100; 

imagecopyresampled($dest, $src, $dst_x, $dst_y, $src_x, $src_y, 200, 280, 180, 252); 
$resultImage = "temp/" . $userId . '_resultImage_' . rand() . ".gif"; 
imagegif($dest, $resultImage); 
imagedestroy($dest); 
imagedestroy($src); 

有沒有辦法解決這個問題而不會丟失圖像質量。 請通過此幫助我 謝謝。

回答

0

保留原始圖像格式,因爲我相信GIF只能處理256種顏色。