首页 > 解决方案 > 调整大小后如何防止上传原始图像

问题描述

我正在使用下面的代码来调整图像大小并上传图像。但据我所知,上传了 2 张图片。原始的和调整大小的。只应上传调整大小的。我不知道该怎么做。

$file = $_FILES['main_image']['tmp_name']; 
$sourceProperties = getimagesize($file);
$fileNewName = 'mainimage-'.time();
$folderPath = "data/uploads/";
$ext = pathinfo($_FILES['main_image']['name'], PATHINFO_EXTENSION);
$imageType = $sourceProperties[2];

switch ($imageType) {

    case IMAGETYPE_PNG:
        $imageResourceId = imagecreatefrompng($file); 
        $targetLayer = imageResize($imageResourceId,$sourceProperties[0],$sourceProperties[1]);
        imagepng($targetLayer,$folderPath. $fileNewName. "_resized.". $ext);
        break;

    case IMAGETYPE_GIF:
        $imageResourceId = imagecreatefromgif($file); 
        $tagetLayer = imageResize($imageResourceId,$sourceProperties[0],$sourceProperties[1]);
        imagegif($targetLayer,$folderPath. $fileNewName. "_resized.". $ext);
        break;

    case IMAGETYPE_JPEG:
        $imageResourceId = imagecreatefromjpeg($file); 
        $targetLayer = imageResize($imageResourceId,$sourceProperties[0],$sourceProperties[1]);
        imagejpeg($targetLayer,$folderPath. $fileNewName. "_resized.". $ext);
        break;

    default:
        echo "Invalid Image type.";
        exit;
        break;
}
    // upload the image
    move_uploaded_file($file, $folderPath. $fileNewName. ".". $ext);

这是我用来调整大小的函数:

// function resize image
function imageResize($imageResourceId,$width,$height) {

    $targetWidth =750;
    //$targetHeight =300;
    $targetHeight = ($height / $width) * $targetWidth; // keep ratio

    $targetLayer = imagecreatetruecolor($targetWidth,$targetHeight);
    imagecopyresampled($targetLayer,$imageResourceId,0,0,0,0,$targetWidth,$targetHeight, $width,$height);

    return $targetLayer;
}

标签: phpimageuploadresize

解决方案


推荐阅读