PHP & Others

gd, imagerotate - gd.. 이미지 회전시키기..

페이지 정보

본문

imagerotate 라는 함수가 있다.
이미지의 width가 height 보다 작을때.. 270, -90 도로 회전시킬 경우에는.. 이미지가 짤린다.
그래서 생각해낸 방법이..
정사각형의 이미지를 만들고, 그 안에 원본 이미지를 카피한 다음에 이 정사각형을 회전시키고..
회전 시킨 이미지를 다시 회전시켰을때 나타날 이미지의 사이즈를 만든 다음에 이미지에
회전시킨 이미지중.. x,y값을 적절히 뽑아내서 이미지를 카피한다.

-------------------------------------------------------------------
/*

제작자이름 : 김태준
제작자메일 : myself2@hanmail.net
관련사이트 : http://epplus.com

*/

function rotate($src_img, $degrees){
         
    // file size
      list($f_width, $f_height, $f_type, $f_attr) = getimagesize($src_img);
         
      if($degrees == 180){
        $src_img  = ImageCreateFromjpeg($src_img); 
        $dst_img = imagerotate($src_img, $degrees, 0);
      }
      else{ // 90, 270 인 경우..
          if($f_width > $f_height){
            $size = $f_width;
          }
          else{
            $size = $f_height;
          }
         
          //1..
          $dst_img = imagecreatetruecolor($size, $size);
          $src_img  = ImageCreateFromjpeg($src_img);  // 지정한 위치에 있는 파일로부터 새로운 이미지 생성..           
          imagecopy($dst_img, $src_img, 0,0,0,0,$f_width,$f_height);
          $dst_img = imagerotate($dst_img, $degrees, 0);
          $src_img = $dst_img;
         
          //2..         
          $dst_img = imagecreatetruecolor($f_height, $f_width);
       
        // degrees 와 이미지의 넓이와 높이의 차이에 따라 복사된 이미지의 위치가 틀려짐..         

          if( (($degrees == 90) && ($f_width > $f_height)) || (($degrees == 270) && ($f_width < $f_height)) ){
            imagecopy($dst_img, $src_img, 0,0,0,0,$size,$size);
          }         
          if(($degrees == 90) && ($f_width < $f_height)){
            imagecopy($dst_img, $src_img, 0,0,0,$size-$f_width,$size,$size);
          }
          if(($degrees == 270) && ($f_width > $f_height)){
            imagecopy($dst_img, $src_img, 0,0,$size-$f_height,0,$size,$size);
          }
      }
       
      return $dst_img;
       
    } // rotate function end.

관련자료

등록된 댓글이 없습니다.
Today's proverb
우리 시대에 가장 암울한 말이 있다면 "남 하는 대로" "나 하나쯤이야" "세상이 그런데". 우리 시대에 남은 희망이 있다면 "나 하나만이라도" "내가 있음으로 " "내가 먼저". (박노해)