2013-10-19 4 views
0

WideImage 라이브러리를 사용하여 가로 세로 비율을 유지하면서 미리 정의 된 최대 크기로 이미지의 크기를 조정하려고합니다.WideImage PHP 라이브러리를 사용하여 이미지의 크기를 조정할 때 화면 비율 유지

예 :

최대 허용 Dimesions : 200x200 크기

입력 이미지 크기 : 300x200으로 로고 (1.5 : 1 비율),

전류 출력 이미지 크기 : 200x200 크기

예상 출력 이미지 크기 : 200x133 (종횡비 1.5 : 1).

현재 종횡비가 변경되면 이미지가 왜곡됩니다. 가로 세로 비율을 유지하려면 어떻게해야합니까?

아래 코드를 사용하고 있습니다.

$targetWidth = 200; 
$targetHeight = 200; 

$sourceRatio = $sourceWidth/$sourceHeight; 
$targetRatio = $targetWidth/$targetHeight; 

if ($sourceRatio < $targetRatio) { 
    $scale = $sourceWidth/$targetWidth; 
} else { 
    $scale = $sourceHeight/$targetHeight; 
} 

$resizeWidth = (int)($sourceWidth/$scale); 
$resizeHeight = (int)($sourceHeight/$scale); 


$img->resize($resizeWidth, $resizeHeight) 

PS : 나는이 간단한 논리가 내 도움에 와서 Resize image without distortion keeping aspect ratio then crop excess using WideImage

+0

왜 투표가 다운 되었습니까? plz는 명확하지 않은 것이 있으면 설명합니다. 나는 전문가가 아니다. – Purus

+0

문제를 이해할 수 없습니다. 문서에서 : "기본적으로 크기를 조정하면 원본 이미지의 종횡비가 유지되고 결과 이미지는 내부의 지정된 크기에 맞습니다." 따라서 $ img-> resize (200,200)이면 충분합니다. – user276648

+0

아니요. 당신이 말한대로하지 않겠습니다. – Purus

답변

1

에서 위의 논리를 얻었다.

$targetWidth = 200; 
$targetHeight = 200; 

$ratio = $srcWidth/$srcHeight; 

if ($ratio > 1) { 
    $resizeWidth = $targetWidth; 
    $resizeHeight= $targetHeight/$ratio; 
} else { 
    $resizeWidth = $targetWidth * $ratio; 
    $resizeHeight= $targetHeight; 
} 

$img->resize($resizeWidth, $resizeHeight)