我使用調整圖像大小:imagecopyresampled有時創建空白影像
//load file and dimensions
$obj_original_image = imagecreatefromjpeg($str_file_path);
list($int_width, $int_height, $image_type) = getimagesize($str_file_path);
//compress file
$int_thumbnail_width = 320;
$int_ratio = $int_thumbnail_width/$int_width;
$int_new_width = $int_thumbnail_width;
$int_new_height = $int_height * $int_ratio;
$obj_image = imagecreatetruecolor($int_new_width, $int_new_height);
imagecopyresampled($obj_image, $obj_original_image, 0, 0, 0, 0, $int_new_width, $int_new_height, $int_width, $int_height);
imagejpeg($obj_image, $GLOBALS['serverpath'] . '/images/uploaded/video-thumbs/'.$arr_data['thumbnail_folder'].'/' . $arr_data['id']. '.jpg', $int_compression = 85);
,這是一般可以正常使用。但偶爾,它會產生一張空白的白色圖像。我已閱讀http://php.net/manual/en/function.imagecopyresampled.php:
由於調色板圖像限制(255 + 1色)存在問題。對圖像進行重採樣或濾波通常需要比255更多的顏色,使用一種近似來計算新的重採樣像素及其顏色。使用調色板圖像我們嘗試分配一種新的顏色,如果失敗了,我們選擇最接近的(理論上)計算的顏色。這並不總是最接近的視覺顏色。這可能會產生一個奇怪的結果,如空白(或視覺空白)的圖像。爲了避免這個問題,請使用truecolor圖像作爲目標圖像,例如imagecreatetruecolor()創建的圖像。
但是,我已經使用imagecreatetruecolor。我總是縮放相同大小的圖像,因此它不能成爲寬度/高度問題。它只是有時會發生,大多數時候圖像縮放工作正常。任何想法如何解決這個問題?
謝謝馬克B,獲取文件上的座標和有效點是一個JPG和寬度和高度的好建議。我知道它始終是jpg,不過因爲我剛剛將原始網絡攝像頭圖像捕獲保存爲jpg,因此在調整大小之前。 – Newmania 2011-05-21 08:53:25