PHP图像缩略图创建不适用于高分辨率图像

时间:2016-08-03 21:43:03

标签: php thumbnails image-upload

我正在处理的网站具有上传图片的功能。上传后,会生成一个缩略图并保存到“上传”状态。夹。这一切都很有效,直到我尝试上传用iPhone拍摄的全景图。这些图像宽约11,000像素,我认为这是问题所在。

第一个问题:什么变量或参数限制了缩略图的创建?这个问题是否可以解决?

第二个问题:我已经把那个停止工作的部分放在了试验中。捕获但是php代码在缩略图创建部分之后不执行任何操作。当这部分代码不起作用时,如何让它做其他事情呢?

我认为问题出在imagecopyresampled的某个地方,但我不确定。我希望有人比我更有经验。

$ds          = DIRECTORY_SEPARATOR;
$storeFolder = '../uploads/';

if (!empty($_FILES)) {
    $tempFile = $_FILES['file']['tmp_name'];
    $targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;
    $date = new DateTime();
    $newFileName = $date->getTimestamp().$_FILES['file']['name'];
    $targetFile =  $targetPath. $newFileName;
    move_uploaded_file($tempFile,$targetFile);

    $thumbStoreFolder = '../thumbs/';
    $thumbPath = dirname( __FILE__ ) . $ds. $thumbStoreFolder . $ds;
    $thumbnail = $thumbPath.'thumb'.$newFileName;
    list($width,$height) = getimagesize($targetFile);
    if($width >= $height) {
        $thumb_width = 300;
        $ratio = $width / $thumb_width;
        $thumb_height = $height / $ratio;
    } else {
        $thumb_height = 300;
        $ratio = $height / $thumb_height;
        $thumb_width = $width / $ratio;
    }
    $thumb_create = imagecreatetruecolor($thumb_width,$thumb_height);
    $source = imagecreatefromjpeg($targetFile);
    imagecopyresampled($thumb_create,$source,0,0,0,0,$thumb_width,$thumb_height,$width,$height);
    imagejpeg($thumb_create,$thumbnail);
}

0 个答案:

没有答案