在PHP中调整图像大小我想编写一些PHP代码,自动调整通过表单上传到147x147px的任何图像的大小,但我不知道如何处理(我是一个相对的PHP新手)。到目前为止,我已经成功地上传了图片,文件类型被识别,名字被清理,但是我想在代码中添加调整大小的功能。例如,我有一个测试映像,它是2.3MB,维度是1331x1331,我希望代码能够缩小它的大小,我猜这也会极大地压缩图像的文件大小。到目前为止,我得到了以下信息:if ($_FILES) {
//Put file properties into variables
$file_name = $_FILES['profile-image']['name'];
$file_size = $_FILES['profile-image']['size'];
$file_tmp_name = $_FILES['profile-image']['tmp_name'];
//Determine filetype
switch ($_FILES['profile-image']['type']) {
case 'image/jpeg': $ext = "jpg"; break;
case 'image/png': $ext = "png"; break;
default: $ext = ''; break;
}
if ($ext) {
//Check filesize
if ($file_size < 500000) {
//Process file - clean up filename and move to safe location
$n = "$file_name";
$n = ereg_replace("[^A-Za-z0-9.]", "", $n);
$n = strtolower($n);
$n = "avatars/$n";
move_uploaded_file($file_tmp_name, $n);
} else {
$bad_message = "Please ensure your chosen file is less than 5MB.";
}
} else {
$bad_message = "Please ensure your image is of filetype .jpg or.png.";
}
}$query = "INSERT INTO users (image) VALUES ('$n')";mysql_query($query) or die("Insert failed. " . mysql_error()
. "<br />" . $query);
3 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
function resize_image($file, $w, $h, $crop=FALSE) { list($width, $height) = getimagesize($file); $r = $width / $height; if ($crop) { if ($width > $height) { $width = ceil($width-($width*abs($r-$w/$h))); } else { $height = ceil($height-($height*abs($r-$w/$h))); } $newwidth = $w; $newheight = $h; } else { if ($w/$h > $r) { $newwidth = $h*$r; $newheight = $h; } else { $newheight = $w/$r; $newwidth = $w; } } $src = imagecreatefromjpeg($file); $dst = imagecreatetruecolor($newwidth, $newheight); imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); return $dst;}
$img = resize_image(‘/path/to/some/image.jpg’, 200, 200);
慕妹3146593
TA贡献1820条经验 获得超9个赞
// for jpg function resize_imagejpg($file, $w, $h) { list($width, $height) = getimagesize($file); $src = imagecreatefromjpeg($file); $dst = imagecreatetruecolor($w, $h); imagecopyresampled($dst, $src, 0, 0, 0, 0, $w, $h, $width, $height); return $dst;} // for pngfunction resize_imagepng($file, $w, $h) { list($width, $height) = getimagesize($file); $src = imagecreatefrompng($file); $dst = imagecreatetruecolor($w, $h); imagecopyresampled($dst, $src, 0, 0, 0, 0, $w, $h, $width, $height); return $dst;}// for giffunction resize_imagegif($file, $w, $h) { list($width, $height) = getimagesize($file); $src = imagecreatefromgif($file); $dst = imagecreatetruecolor($w, $h); imagecopyresampled($dst, $src, 0, 0, 0, 0, $w, $h, $width, $height); return $dst;}
// jpg change the dimension 750, 450 to your desired values $img = resize_imagejpg('path/image.jpg', 750, 450);
$img
// again for jpg imagejpeg($img, 'path/newimage.jpg');
- 3 回答
- 0 关注
- 674 浏览
添加回答
举报
0/150
提交
取消