2014-03-13 8 views
0

아래 코드를 사용하여 PHP에서 이미지 축소판을 생성합니다. 이미지 높이 및 너비 치수에 비례하여 축소판을 생성합니다. 상기 예 PHP에서 300X200 크기로 이미지 축소판을 생성하는 방법은 무엇입니까?

make_thumb('images/image.jpg', 'images-generated-thumbs/7.jpg', 300, 200); 

function make_thumb($src, $dest, $desired_width, $desired_height) { 

    /* read the source image */ 
    $source_image = imagecreatefromjpeg($src); 
    $width = imagesx($source_image); 
    $height = imagesy($source_image); 

    /* find the "desired height" of this thumbnail, relative to the desired width */ 
    $desired_height = floor($height*($desired_width/$width)); 
    $desired_width = floor($width*($desired_height/$height)); 

    /* create a new, "virtual" image */ 
    $virtual_image = imagecreatetruecolor($desired_width, $desired_height); 

    /* copy source image at a resized size */ 
    imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height); 

    /* create the physical thumbnail image to its destination */ 
    imagejpeg($virtual_image, $dest); 
} 

, 그것의 크기는 299x187와 7.jpg 섬네일을 생성한다. 그래서, 내 질문은 픽셀 ((300-299) x (300-187))의 나머지 부분을 흰색으로 채우는 방법입니다. 위의 코드에서 $desired_height 변수를 삭제하면 폭이 300 인 미리보기 이미지가 정확하게 생성되므로 나머지 높이를 흰색으로 채울 필요가 있습니다. 당신은 너비/높이를 수정하기 전에

+0

엄지 손가락 크기를 300 * 200으로 정확히 잡아야하는 이유는 무엇입니까? –

답변

2

, 보관 :

캔버스하고있는
$actual_width = $desired_width; 
$actual_height = $desired_height; 
$desired_height = floor($height*($desired_width/$width)); 
$desired_width = floor($width*($desired_height/$height)); 

:

이 가
/* create a new, "virtual" image */ 
$virtual_image = imagecreatetruecolor($actual_width, $actual_height); 
이 시점에서

가상 이미지가 검은 색 가 흰색으로 채우기 :

$white = imagecolorallocate($virtual_image, 255, 255, 255); 
imagefill($virtual_image, 0, 0, $white); 
+0

대단히 감사합니다. – Sami