2012-02-19 90 views
1

我嘗試了很多方法來做到這一點,但我仍然有很多麻煩。將每個尺寸的圖像調整爲固定的寬度和高度

是否可以將所有圖像的大小調整爲固定的寬度和高度?

我想width>=200pxheight>=260px每個上傳的圖像調整爲width=200pxheight=260px,但我想保持一點比例,如果圖像是大於200x260px按比例調整其大小,然後捕獲圖像200x260px的中心。

我只需要知道從哪裏開始做什麼,但如果你有一個例子,我想看看它。謝謝。

+2

讓我們看看你試過的方法,並在那裏你卡住了 – 2012-02-19 09:40:20

+0

你爲什麼不只是設置寬度到200,並將高度設置爲「自動」?你嘗試過嗎? – itsols 2012-02-19 09:40:43

+0

@itsols如果圖像是500x1500,如果圖像是1000x200,該怎麼辦? – John 2012-02-19 09:41:54

回答

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

要開始編寫函數,我們必須聲明它,然後我們必須拋出我們的屬性。我們想限制我們的圖像,所以我們必須讓函數知道我們想要限制它的尺寸,並且我們必須知道原始圖像的大小是從什麼開始的(我們將在第二秒)。

<?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像素(或您指定的任何內容)。

+2

但是,正如OP在上面的評論中所說的,如果上傳的圖像寬度爲5000像素,該怎麼辦?你所做的只是調整*顯示寬度而不是生成原始圖像的裁剪版本。這會降低用戶的頁面速度,因爲他們會下載2MB圖片,而5k圖片就足夠了。 – okyanet 2012-02-19 10:42:17

相關問題