根据图像的长宽比创建缩略图,同时使用php上传图像
问题描述:
我想在上传图像时创建缩略图,我已经创建了上传脚本。根据图像的长宽比创建缩略图,同时使用php上传图像
<?php
if (isset($_POST['upload'])) {
$target = "./img/".basename($_FILES['image']['name']);
$image = $_FILES['image']['name'];
$sql = "INSERT INTO `image`(`image`) VALUES ('$image')";
mysqli_query($connection, $sql);
if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) {
$smsg = "Image Uploaded Successfuly";
}else {
$fmsg = "An Error Occure During Upload";
}
}
?>
和调整图像的脚本:
function resize($newHeight, $targetFile, $originalFile) {
$info = getimagesize($originalFile);
$mime = $info['mime'];
switch ($mime) {
case 'image/jpeg':
$image_create_func = 'imagecreatefromjpeg';
$image_save_func = 'imagejpeg';
$new_image_ext = 'jpg';
break;
case 'image/png':
$image_create_func = 'imagecreatefrompng';
$image_save_func = 'imagepng';
$new_image_ext = 'png';
break;
case 'image/gif':
$image_create_func = 'imagecreatefromgif';
$image_save_func = 'imagegif';
$new_image_ext = 'gif';
break;
default:
throw new Exception('Unknown image type.');
}
$img = $image_create_func($originalFile);
list($width, $height) = getimagesize($originalFile);
$newWidth = ($width/$height) * $newHeight;
$tmp = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($tmp, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
if (file_exists($targetFile)) {
unlink($targetFile);
}
$image_save_func($tmp, "thumb/$targetFile.$new_image_ext");
}
我加入两个这样的脚本
<?php
if (isset($_POST['upload'])) {
$target = "./img/".basename($_FILES['image']['name']);
$image = $_FILES['image']['name'];
$sql = "INSERT INTO `image`(`image`) VALUES ('$image')";
mysqli_query($connection, $sql);
if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) {
$smsg = "Image Uploaded Successfuly";
resize(320, '$target', '$target'); //resize function
}else {
$fmsg = "An Error Occure During Upload";
}
}
?>
,当我尝试加入两个脚本则图片上传,但缩略图不创建错误=否这样的文件或目录。
任何人都可以帮助我加入脚本并在上传图片时创建缩略图。
答
以下行的变量单引号没有被解析,该值实际上是解释为$target
而不是预期的folder/filename.xxx
:
resize(320, '$target', '$target');
要么你删除它们:
resize(320, $target, $target);
或使用双引号。
resize(320, "$target", "$target");
请教关于字符串的http://php.net/manual/en/language.types.string.php。
使用PHP的错误报告,并确保路径是正确的,并且文件夹是可以写入适当的权限。
可以dv'er(刚才)分享他们对此的看法?这将有所帮助。否则,dv是不需要的;这个答案没有错。 –