我上传图片时遇到问题我上传时只看到JPG缩略图,但png缩略图没有显示。 如何将图像转换为JPG从任何类型,如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);
}
答案 0 :(得分:0)
如jereon所述,您想检查文件类型,然后根据类型读取文件。
这是造成问题的一行:
$src = imagecreatefromjpeg($tmp_name);
如果文件不是image/jpeg
,则会失败。你需要检查mime类型然后根据它读取图像。你需要使用这样的东西来阅读mime类型并创建$src
图像:
switch (mime_content_type($tmp_name)) {
case 'image/jpeg':
$src = imagecreatefromjpeg($tmp_name);
break;
case 'image/png':
$src = imagecreatefrompng($tmp_name);
break;
case 'image/gif':
$src = imagecreatefromgif($tmp_name);
break;
default:
// If mime type is unknown, you can't process it
throw new Exception('Unknown file type');
break;
}