본문 바로가기
먹고 살려면 개발뿐/PHP

[PHP] 이미지 비율 유지 축소

by 세미콜론;™ 2016. 12. 7.


이미지 게시판 개발할 때 썸네일을 생성해야 하는 경우가 있습니다.


이미지 비율을 유지하면서 축소하는 방법을 PHP 소스를 통해서 알아보겠습니다.


우선 이미지가 가로형인지 세로형인지에 따라서 크기가 큰 값을 기준으로 비율에 맞게 축소하는 방법입니다. 소스상에서는 가로와 세로의 최대값이 있고, 최대값보다 클 경우에만 축소시키고 작을 경우에는 원본 이미지를 그대로 사용합니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?
  define('__Limit_Width',300);  // 원하는 가로길기 limit값 
  define('__Limit_Height',200); // 원하는 세로길기 limit값
  // $img는 이미지의 경로(예:./images/phplove.gif) 
  $imgsize = getimagesize($img); 
  if($imgsize[0]>__Limit_Width || $imgsize[1]>__Limit_Height) { 
  // 가로길이가 가로limit값보다 크거나 세로길이가 세로limit보다 클경우 
        if($imgsize[0]<$imgsize[1]) { 
        // 가로가 세로보다 클경우 
                $sumw = (100*__Limit_Height)/$imgsize[1]; 
                $img_width = ceil(($imgsize[0]*$sumw)/100); 
                $img_height = __Limit_Height; 
        } else { 
        // 세로가 가로보다 클경우 
                $sumh = (100*__Limit_Width)/$imgsize[0]; 
                $img_height = ceil(($imgsize[1]*$sumh)/100); 
                $img_width = __Limit_Width; 
        } 
  } else { 
  // limit보다 크지 않는 경우는 원본 사이즈 그대로..... 
        $img_width = $imgsize[0]; 
        $img_height = $imgsize[1]; 
  } 
?>
<img src='$img' border='0' width='$img_width' height='$img_height'>
cs



구글에서 검색해보면 더 좋은 소스들이 많이 있을 수 있습니다. 저도 어디서 가져온 소스인데 개인 보관용으로 작성하였으나 필요한 분들에게 공유하는 것도 좋을 것 같아 공개로 포스팅 합니다.

댓글