gpt4 book ai didi

php - 在 PHP 中调整图像大小

转载 作者:IT老高 更新时间:2023-10-28 11:58:07 26 4
gpt4 key购买 nike

我想编写一些 PHP 代码,自动将通过表单上传的任何图像调整为 147x147 像素,但我不知道如何去做(我是一个相对的 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);

最佳答案

您需要使用 PHP 的 ImageMagickGD处理图像的函数。

以 GD 为例,它就像...一样简单

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);

从个人经验来看,GD 的图像重采样确实也大大减小了文件大小,尤其是在重采样原始数码相机图像时。

关于php - 在 PHP 中调整图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14649645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com