我使用调整图像大小: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