【发布时间】:2017-11-13 21:26:09
【问题描述】:
我上传图片时遇到问题,我上传时只看到 JPG 缩略图,但未显示 png 缩略图。 如何将图像从任何类型(如 PNG、GIF)转换为 JPG 以显示缩略图。对不起,我的英语不好。 这是我的代码
foreach($_FILES['images']['tmp_name'] as $key => $tmp_name){
$file_name = $key.$rd.$_FILES['images']['name'][$key];
$file_tmp =$_FILES['images']['tmp_name'][$key];
$filePath = "img/zoekertjes/";
$desired_dir="img/zoekertjes";
if(empty($errors)==true){
if(is_dir($desired_dir)==false){
mkdir("$desired_dir", "img/zoekertjes",true);
}
if(is_dir("$desired_dir/".$file_name)==false){
$src = imagecreatefromjpeg($tmp_name);
list($width,$height)=getimagesize($tmp_name);
$newwidth=($width/$height)*300;
$newheight=300;
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
$rd=rand();
$filename = "img/thumbphotos/".$file_name;
imagejpeg($tmp,$filename,100);
imagedestroy($src);
move_uploaded_file($file_tmp,"$desired_dir/".$file_name);
}else{ // rename the file if another one exist
$new_dir="$desired_dir/".$file_name.time();
rename($file_tmp,$new_dir);
}
$query="INSERT INTO `t_images` (d_image_naam, d_image_images) VALUES ('$_POST[name]', '$file_name')";
mysqli_query($db,$query);
}
else
{
print_r($errors);
}
【问题讨论】:
-
您没有检查扩展程序,您只需使用
imagecreatefromjpeg()进行所有上传。因此,对于非 jpeg 文件,这将失败。 -
@jeroen 我如何添加扩展?
-
您可以使用
imagecreatefromjpeg()、imagecreatefrompng()等检查上传的文件类型并进行相应处理。 -
所以我可以像这样添加 $src = imagecreatefromjpeg($tmp_name); $src = imagecreatefrompng($tmp_name); ?