慕的地8271018
您需要使用任何一个PHP的ImageMagick或GD函数用于处理图像。例如,对于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的图像重采样也大大减少了文件大小,特别是当重采样原始数码相机图像时。
慕妹3146593
如果你不关心纵横比(也就是说,你想把图像强制到一个特定的维度),下面是一个简化的答案。// 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、png或gif)调用上述函数之一,并传递上传文件的绝对路径,如下所示: // 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');希望这能帮上忙。有关调整大小的更多信息,请查看这些链接。Imagick:regzeImage和Imagejpeg()