php - 调整大小后如何防止上传原始图像
问题描述
我正在使用下面的代码来调整图像大小并上传图像。但据我所知,上传了 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;
}
解决方案
推荐阅读
- flutter - 带有圆形图像图标的颤振布局
- python-3.x - 我正在使用 bs4 进行网页抓取,但网址不会显示
- javascript - 在 Laravel 中实现 intlTelInput 的问题
- bash - 如何在函数中创建目录
- javascript - 如何使用 jquery 将数组值分配给另一个输入类型
- apache-spark - Parquet 文件大小如何随 Spark 数据集中的计数而变化
- python - 重载、引用以及介于两者之间的所有内容
- javascript - React 的 Firebase onAuthStateChanged 错误
- angular - 选中的复选框(作为选定的行)在页面移动然后返回时未选中
- jekyll - Jekyll - 在分配之前评估一个字符串