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
행복은 우리 마음속에 숨어 있는 거예요. 우리가 마음의 문을 열고 긍정적인 생각만 가진다면 우리에게 선물로 주어지는 거예요. 《어린 왕자에게서 배우는 삶을 사랑하는 지혜》, 최현복