2012-02-19 3 views
1

나는 그렇게하기 위해 많은 방법을 시도했지만, 여전히 많은 문제가 있습니다.모든 크기의 이미지를 고정 너비와 높이로 크기 조정

모든 이미지를 고정 너비 및 높이로 조정할 수 있습니까?

나는 width>=200pxheight>=260px와 모든 업로드 된 이미지가 width=200pxheight=260px 크기를 조정할 수 싶지만 비례의 비트를 유지하려는 이미지가 더 큰 경우 200x260px보다 이미지 200x260px의 중심을 캡처 한 후 비례 적으로 크기를 조정하고.

어디에서 시작할지, 무엇을해야 할지를 알고 싶습니다. 예제가 있으면보고 싶습니다. 감사.

+2

은 우리에게 당신이 시도한 방법을 보여, 방금 폭을 설정하지 않는 이유가 –

+0

을 붙어있어 어디 200으로 설정하고 높이를 "auto"로 설정합니까? 너 그거 해봤 니? – itsols

+0

@itsols 이미지가 1000x200 인 경우 500x1500의 이미지는 무엇입니까? – John

답변

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 픽셀 인 경우 어떻게해야합니까? 원래 이미지의 자른 버전을 생성하는 대신 * 디스플레이 * 너비의 크기를 조정하면됩니다. 이렇게하면 5k로 충분할 때 2MB 이미지를 다운로드 할 때 페이지가 느려질 것입니다. – okyanet