본문 바로가기
IT 실무/웹프로그래밍

[PHP] 썸네일 함수 정리

by 지식id 2012. 11. 10.
반응형

업로드한 파일이나 이미 저장된 파일을 축소해서 썸네일을 생성하는 방법을 요약하면
 
1. 원본이미지를 불러온다
2. 새로이 생성될 이미지가 들어갈 집을 만든다
3. 만들어진 집에 원본이미지를 축소하여 붙여 넣는다
4. 저장한다.
  
예를들어 400*200 인 origin.gif 를 200*100 의 copy.gif 로 만드는 과정을 보자

// 원본 이미지 load
$path = "/images/origin.gif";
$o_img = imagecreatefromgif($path);


// 썸네일 이미지가 들어갈 집 만들기
$n_img = imagecreatetruecolor(200,100);


// 생성한 집에 원본이미지를 축소해서 넣기
imagecopyresampled($n_img,$o_img,0,0,0,0,200,100,400,200);


// 이미지 저장하기
$n_path = "/images/copy.gif";
imagegif($n_img, $n_path);


// 썸네일 생성
imagecopyresampled($n_img, $o_img, 0,0,$offsetX,$offsetY,$w,$h,$cropW,$cropH);

 
각각의 파라미터들은 썸네일이 될 이미지, 원본 이미지, x좌표 기준점, y좌표 기준점, x좌표, y좌표, 축소할 길이, 축소할 세로길이, 원본에서 잘라낼 가로길이, 원본에서 잘라낼 세로길이

출처) http://raonbnp.blog.me/130142873249

 

아래는 잘 정리 된 함수

  1. <?
  2. // 원본 이미지 -> 썸네일로 만드는 함수
  3. function thumbnail($file, $save_filename, $max_width, $max_height)
  4. {
  5.         $src_img = ImageCreateFromJPEG($file); //JPG파일로부터 이미지를 읽어옵니다
  6.  
  7.         $img_info = getImageSize($file);//원본이미지의 정보를 얻어옵니다
  8.         $img_width = $img_info[0];
  9.         $img_height = $img_info[1];
  10.  
  11.         if(($img_width/$max_width) == ($img_height/$max_height))
  12.         {//원본과 썸네일의 가로세로비율이 같은경우
  13.             $dst_width=$max_width;
  14.             $dst_height=$max_height;
  15.         }
  16.  
  17.         elseif(($img_width/$max_width) < ($img_height/$max_height))
  18.         {//세로에 기준을 둔경우
  19.             $dst_width=$max_height*($img_width/$img_height);
  20.             $dst_height=$max_height;
  21.         }
  22.  
  23.         else
  24.         {//가로에 기준을 둔경우
  25.             $dst_width=$max_width;
  26.             $dst_height=$max_width*($img_height/$img_width);
  27.         }
  28.  
  29.  
  30.         $dst_img = imagecreatetruecolor($dst_width, $dst_height); //타겟이미지를 생성합니다
  31.    
  32.         ImageCopyResized($dst_img, $src_img, 0, 0, 0, 0, $dst_width, $dst_height, $img_width, $img_height); //타겟이미지에 원하는 사이즈의 이미지를 저장합니다
  33.    
  34.         ImageInterlace($dst_img);
  35.         ImageJPEG($dst_img,  $save_filename); //실제로 이미지파일을 생성합니다
  36.         ImageDestroy($dst_img);
  37.         ImageDestroy($src_img);
  38. }
  39.  
  40. ?>
  41.  
  42. <?
  43. // 원본 이미지 파일
  44. $srcFile = "./upfiles_adbrain/20055/10/img/5.jpg";
  45.  
  46. // 타겟 이미지 파일
  47. $sumFile = "./upfiles_adbrain/20055/10/sub/9.jpg";
  48.  
  49. thumbnail($srcFile,$sumFile,"97","72");
  50. ?>

출처) http://blog.naver.com/wordless?Redirect=Log&logNo=120018113204

 

반응형

댓글