웹마스터 팁

안녕하세요, 요즘 이미지 관리툴을 짜고 있는 막강커플홈 희민닷컴(www.HeeMin.com)의 민이(irismin@heemin.com)라고 합니다.

저희 커플이 디카로 사진 찍는 걸 좋아해서 디카 산 지 4개월여 만에 사진이 거의 2300여장이나 되었습니다.

웹상에서 이미지를 보고 싶을 때, 제로보드를 썼는데, 화일이 많아지니, 올리는 작업도 보통이 아니더군요. 게다가 이미지 용량이 큰 경우, 제로보드의 썸네일 방식으로는 버벅거림이 있기도 하고, 한 꺼번에 올릴 수 있는 방식 등을 고민하다가, FTP, HTTP 를 모두 지원하는 PICDB 프로그램을 짜고 있고, 현재 스킨 처리 부분만 되면 완성 단계입니다. 1.0 버전으로 조만간 공개할까 하네요.. ^^;; (스킨 부분을 뺀 부분)

완성이 되면, DB를 사용하지 않고 빠르고 간편한 웹용 이미지 뷰어, 관리툴이 될 것입니다. 현재 저희 커플은 비밀리에 2300여장의 이미지를 관리하고 있답니다.. ^^;;; 에... 여자친구도 그다지 컴퓨터에 밝지 않은데, 재밌고 간편해서 좋다더군요... 에... 팔이 안으로 굽는 다거나 하는건 아닌 것 같은데..

헷...

그 중에서 제가 마지막에 풀었던 문제입니다.

이미지 회전 함수인데요, 속도가 느립니다. ^^;;;
100x100 정도 크기면 모르겠는데, 640x480 정도 가면 많이 느리군요..
php 자체에서 분산처리를 해보까 하는 생각도 들고... 으음...
하여간 회전은 다 되니까, 일단 공개하겠습니다. 조만간 속도 업글이 된 함수를 다시 공개하겠습니다.

사설이 길었네요.. ㅡ.ㅡ;; 죄송합니다.

--------------------------------------------------------------------

function ImageRotate($src_file, $tag_file, $rotate) {
        // ImageRotate function ver 1.0
        // -------------------------------------------------------------
        // $rotate : 90, 180, 270, horizontal, vertical
        // -------------------------------------------------------------
        // 이 이미지 회전 함수는 막강커플홈 희민닷컴(www.heemin.com)의
        // 민이(irismin@heemin.com)가 만들었습니다.
        // 사용하실 때는 고맙다는 인사라도.. ㅡ.ㅡ;;
        // 희민닷컴에 오셔서 방명록에 함만 끄적여 주심 감사하겠습니다.
        // 속도가 느려서 좀 더 빨리 처리할 수 있는 방법을 고민 중입니다.
        // 2001.11.5 -민이-
        
        $src_img=ImageCreateFromjpeg($src_file); //원본
        $sx=imagesx($src_img);
        $sy=imagesy($src_img);

        if ($rotate==180 || $rotate=="horizontal" || $rotate=="vertical") {
                $dst_img=ImageCreate($sx, $sy);        //빈이미지를 만들어주고
                ImageCopyResized($dst_img,$src_img,0,0,0,0,$sx,$sy,$sx,$sy); //줄여서 그려준다
        }
        else
        {
                $dst_img=ImageCreate($sy, $sx);        //빈이미지를 만들어주고
                ImageCopyResized($dst_img,$src_img,0,0,0,0,$sy,$sx,$sx,$sy); //줄여서 그려준다
        }

        for ($j=0; $j<$sx; $j++) {
        for ($i=0; $i<$sy; $i++) {
                $pixcol1=imagecolorat($src_img,$j,$i);                        // 좌표값의 색상을 추출한다
                $pixcol2=imagecolorsforindex($src_img, $pixcol1);        // 추출된 값의 RGB를 반환
                $pixcol3=imagecolorclosest($dst_img,$pixcol2[red],$pixcol2[green],$pixcol2[blue]);        // RGB를 변경될        이미지의 색상값이 맞춘 INDEX 값으로 변환
                switch ($rotate) {
                        case 270:
                                $to_x=$i;
                                $to_y=$sx-$j-1;
                        break;
                        case 90:
                                $to_x=$sy-$i-1;
                                $to_y=$j;
                        break;
                        case 180:
                                $to_x=$sx-$j;
                                $to_y=$sy-$i-1;
                        break;
                        case "vertical":
                                $to_x=$j;
                                $to_y=$sy-$i-1;
                        break;
                        case "horizontal":
                                $to_x=$sx-$j;
                                $to_y=$i-1;
                        break;
                }
                imagesetpixel($dst_img,$to_x,$to_y,$pixcol3);                        // 변환된 색상을 목적 포인트에 찍어준다.
        }
        }

        Imagejpeg($dst_img,$tag_file,100); //        화일로 출력
        ImageDestroy($dst_img);        //메모리 비워주기
        ImageDestroy($src_img);        //메모리 비워주기
}


참고로, 에... ImageCopyResized($dst_img,$src_img,0,0,0,0,$sy,$sx,$sx,$sy); //줄여서 그려준다
이 부분이 궁금하실 겁니다. 또는 색상을 추출해서 왜 변환했다가 다시 변환하는 지 궁금하신 분들 계시죠? 이 문제는 마치 그림에 글자를 썼는데, 파스텔 통으로 나와버리는 것과 비슷한 문제 때문인데, 각 이미지의 팔레트가 틀려서 그런 것 같아요.

글구, 굳이 회전되어 그려질 부분에 왜 확대,축소해서 그려줘야 하는가 하는 부분은 미스테리입니다. 이 부분도 속도를 꽤 잡아먹고 있는데, 제가 팔레트 땜에 고민하며 수정하다 보니, 절케 되지 않으면 이상한 색으로 되어 버리더군요..

분석해서 결과를 다음 함수에서 밝혀 드리겠습니다.

^^;;; 글고, 저 초보입니다. 소스 지저분해도 용서하세요. PHP 또는 프로그램 배운지 2달밖에 안됐습니다. 원래 디자이너입니다.. ㅋㅋ ㅡ.ㅡ;;
제목 글쓴이 날짜
천안오피 천안오피 ⦑오피쓰주소.COM⦒ 천안OP 천안스파 천안오피 koykoyah 2025.02.20
광주오피 광주OP ⦑오피.CLUB⦒ 광주휴게텔 광주오피 광주오피 koykoyah 2025.02.20
인천오피 인천오피 ⦑출장안마사이트.COM⦒ 인천OP 인천스파 인천오피 koykoyah 2025.02.20
부평오피 부평오피 ⦑출장마사지안내.COM⦒ 부평OP 부평스파 부평오피 koykoyah 2025.02.20
압구정오피 ⦑오피사이트.NET⦒ 압구정마사지 압구정오피 압구정오피 압구정OP koykoyah 2025.02.20
대전오피 대전출장안마 ⦑출장마사지안내.COM⦒ 대전OP 대전오피 대전오피 koykoyah 2025.02.20
광주오피 광주출장안마 ⦑오피쓰.COM⦒ 광주OP 광주오피 광주오피 koykoyah 2025.02.20
부평오피 ⦑출장안마사이트.COM⦒ 부평오피 부평출장마사지 부평오피 부평OP koykoyah 2025.02.20
홍대오피 ⦑오피.CLUB⦒ 홍대마사지 홍대오피 홍대오피 홍대OP koykoyah 2025.02.20
분당오피 ⦑출장마사지안내.COM⦒ 분당OP 분당오피 분당출장샵 분당오피 koykoyah 2025.02.20
서면오피 ⦑오피쓰.COM⦒ 서면마사지 서면오피 서면오피 서면OP koykoyah 2025.02.20
여의도오피 여의도OP ⦑출장안마사이트.COM⦒ 여의도휴게텔 여의도오피 여의도오피 koykoyah 2025.02.20
충주오피 ⦑오피쓰주소.COM⦒ 충주OP 충주오피 충주출장샵 충주오피 koykoyah 2025.02.20
판교오피 ⦑출장마사지안내.COM⦒ 판교오피 판교OP 판교건마 판교오피 koykoyah 2025.02.20
부산오피 부산오피 ⦑오피쓰주소.COM⦒ 부산OP 부산스파 부산오피 koykoyah 2025.02.20
분당오피 ⦑출장마사지안내.COM⦒ 분당마사지 분당오피 분당오피 분당OP koykoyah 2025.02.20
용인오피 용인OP ⦑오피.CLUB⦒ 용인휴게텔 용인오피 용인오피 koykoyah 2025.02.20
의정부오피 ⦑출장마사지안내.COM⦒ 의정부오피 의정부출장마사지 의정부오피 의정부OP koykoyah 2025.02.20
강남오피 강남오피 ⦑오피쓰.COM⦒ 강남OP 강남스파 강남오피 koykoyah 2025.02.20
평택오피 ⦑오피.CLUB⦒ 평택오피 평택OP 평택건마 평택오피 koykoyah 2025.02.20