将每种尺寸的图像调整为固定的宽度和高度

时间:2012-02-19 09:37:32

标签: php image image-resizing

我尝试了很多方法,但我仍然遇到很多麻烦。

是否可以将所有图像调整为固定的宽度和高度?

我希望将width>=200pxheight>=260px的每张上传图片调整为width=200pxheight=260px,但我希望保持一定的比例,如果图像更大比200x260px按比例调整大小,然后捕获图像中心200x260px

我只是想知道从哪里开始和做什么,但如果你有一个例子,我希望看到它。感谢。

2 个答案:

答案 0 :(得分:5)

如果要修剪图像,可以按以下方式进行修剪: -

//Your Image
$imgSrc = "image.jpg";

//getting the image dimensions
list($width, $height) = getimagesize($imgSrc);

//saving the image into memory (for manipulation with GD Library)
$myImage = imagecreatefromjpeg($imgSrc);

// calculating the part of the image to use for thumbnail
if ($width > $height) {
  $y = 0;
  $x = ($width - $height) / 2;
  $smallestSide = $height;
} else {
  $x = 0;
  $y = ($height - $width) / 2;
  $smallestSide = $width;
}

// copying the part into thumbnail
$thumbSize = 100;
$thumb = imagecreatetruecolor($thumbSize, $thumbSize);
imagecopyresampled($thumb, $myImage, 0, 0, $x, $y, $thumbSize, $thumbSize,        $smallestSide, $smallestSide);

//final output
header('Content-type: image/jpeg');
imagejpeg($thumb);

答案 1 :(得分:-1)

要开始编写函数,我们必须将其声明为...然后我们必须抛出我们的属性。我们想要限制我们的图像,所以我们必须让函数知道我们想要限制它的尺寸,并且我们必须知道原始图像尺寸的开始(我们将在一秒钟内到达那个部分) )。

<?php
function imageResize($width, $height, $target) {
//takes the larger size of the width and height and applies the
formula accordingly...this is so this script will work
dynamically with any size image
if ($width > $height) {
$percentage = ($target / $width);
} else {
$percentage = ($target / $height);
}
//gets the new value and applies the percentage, then rounds the value
$width = round($width * $percentage);
$height = round($height * $percentage);
//returns the new sizes in html image tag format...this is so you
can plug this function inside an image tag and just get the
return "width=\"$width\" height=\"$height\"";
}
?>

在我们在测试驱动器上使用新功能之前,我们需要获取要显示的图像的宽度和高度。 PHP中有一个名为getimagesize()的神奇命令。正确使用此命令将以HTML图像标记格式(width =“x”height =“y”)返回图像宽度,高度,类型甚至宽度和高度。

$mysock = getimagesize("images/sock001.jpg");

现在,$ mysock是一个数组,可以保存有关我们想要显示的特定图像的重要信息。在索引0中,我们有宽度($ mysock [0]),在索引1中,我们有高度($ mysock [1])。这就是我们所需要的,以便得到我们想要的东西。想看功能......好吧,功能?我们走了!

假设您要显示漂亮袜子的列表,但是您希望页面上的空间能够整齐地显示它们,并且要做到这一点,它们不能超过150像素高或宽。

<?php
//get the image size of the picture and load it into an array
$mysock = getimagesize("images/sock001.jpg");
?>
<!-using a standard html image tag, where you would have the
width and height, insert your new imageResize() function with
the correct attributes -->

<img src="images/sock001.jpg" <?php imageResize($mysock[0],
$mysock[1], 150); ?>>

就是这样!现在,无论原始文件大小是多少,它的宽度或高度都不会超过150像素(或者您指定的任何内容)。