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.

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
“무릇 물이란 지세를 따라 흐르되 작은 틈도 놓치지 않고 적시니 지혜를 갖춘 자와 같고, 움직이면서 아래로 흘러가니 예를 갖춘 자와 같으며, 어떤 깊은 곳도 머뭇거리지 않고 들어가니 용기를 가진 자와 같고 장애물이 막혀서 갇히면 고요히 맑아지니 천명을 아는 자와 같으며, 험한 곳을 거쳐 멀리 흐르지만 끝내 남을 허물어뜨리는 법이 없으니 덕을 가진 자와 같다. 천지는 이것으로 이루어지고, 만물은 이것으로 살아가며, 나라는 이것으로 안녕을 얻고, 만사는 이것으로 평안해지며, 만물은 이것으로 바르게 되는 것이다. 이것이 지혜로운 자가 물을 좋아하는 이유이다.” (한영, <<한시외전>>)