我嘗試了很多方法來做到這一點,但我仍然有很多麻煩。將每個尺寸的圖像調整爲固定的寬度和高度
是否可以將所有圖像的大小調整爲固定的寬度和高度?
我想width>=200px
和height>=260px
每個上傳的圖像調整爲width=200px
和height=260px
,但我想保持一點比例,如果圖像是大於200x260px
按比例調整其大小,然後捕獲圖像200x260px
的中心。
我只需要知道從哪裏開始做什麼,但如果你有一個例子,我想看看它。謝謝。
我嘗試了很多方法來做到這一點,但我仍然有很多麻煩。將每個尺寸的圖像調整爲固定的寬度和高度
是否可以將所有圖像的大小調整爲固定的寬度和高度?
我想width>=200px
和height>=260px
每個上傳的圖像調整爲width=200px
和height=260px
,但我想保持一點比例,如果圖像是大於200x260px
按比例調整其大小,然後捕獲圖像200x260px
的中心。
我只需要知道從哪裏開始做什麼,但如果你有一個例子,我想看看它。謝謝。
如果要修剪您可以通過以下方式做形象: -
//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);
要開始編寫函數,我們必須聲明它,然後我們必須拋出我們的屬性。我們想限制我們的圖像,所以我們必須讓函數知道我們想要限制它的尺寸,並且我們必須知道原始圖像的大小是從什麼開始的(我們將在第二秒)。
<?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像素(或您指定的任何內容)。
但是,正如OP在上面的評論中所說的,如果上傳的圖像寬度爲5000像素,該怎麼辦?你所做的只是調整*顯示寬度而不是生成原始圖像的裁剪版本。這會降低用戶的頁面速度,因爲他們會下載2MB圖片,而5k圖片就足夠了。 – okyanet 2012-02-19 10:42:17
讓我們看看你試過的方法,並在那裏你卡住了 – 2012-02-19 09:40:20
你爲什麼不只是設置寬度到200,並將高度設置爲「自動」?你嘗試過嗎? – itsols 2012-02-19 09:40:43
@itsols如果圖像是500x1500,如果圖像是1000x200,該怎麼辦? – John 2012-02-19 09:41:54