이미지 처리 기능 기능: 확대/축소, 잘라내기, 사진 프레임, 워터마크, 선명하게 하기, 회전, 뒤집기, 투명도, 색상 반전, 처리 및 기록 저장 아이디어: 사진이 변경되면 자동으로 새 이미지 생성, 명명 방법 고려 가능 원본 그림을 기반으로 단계를 추가합니다(예: 그림 이름 __ 어떤 단계). 고급 이미지 처리 기능이 필요한 일부 웹 애플리케이션에서는 이 클래스를 참고할 수 있습니다.
- /*
- 이미지 처리 기능 기능: 확대/축소, 잘라내기, 사진 프레임, 워터마크, 선명하게 하기, 회전, 뒤집기, 투명도, 반전
- 기록 처리 및 저장 아이디어: 사진이 변경되면 자동으로 새 사진을 생성합니다. 이름 지정 방법은 원본 사진을 기반으로 단계를 추가하는 것을 고려할 수 있습니다. 예: 사진 이름 __ 단계
- */
- 클래스 사진
- {
- var $PICTURE_URL;//처리할 사진
- var $DEST_URL="temp__01.jpg";//대상 사진 위치 생성
- var $PICTURE_CREATE;// 처리할 사진 생성됨
- var $TURE_COLOR; // 새로운 트루 컬러 이미지 생성
-
- var $PICTURE_WIDTH; // 원본 사진 너비
- var $PICTURE_HEIGHT; // 원본 사진 높이
-
- /*
- 워터마크 유형, 기본값은 워터마크 텍스트입니다
- */
- var $MARK_TYPE=1;
- var $WORD;//UTF-8 이후의 텍스트
- var $WORD_X; //텍스트 가로좌표
- var $WORD_Y;//텍스트 세로좌표
- var $FONT_TYPE;//글꼴 유형
- var $FONT_SIZE="12";//글꼴 크기
- var $FONT_WORD;// 텍스트
- var $ANGLE=0;//텍스트 각도, 기본값은 0
- var $FONT_COLOR="#000000";//텍스트 색상
- var $FONT_PATH="font/simkai.ttf"; //글꼴 라이브러리, 기본값은 송나라
- var $FORCE_URL;//Watermark 이미지
- var $FORCE_X=0;//Watermark 가로 좌표
- var $FORCE_Y=0;//Watermark 수직 좌표
- var $FORCE_START_X=0;//워터마크가 잘린 사진의 가로좌표 좌표
- var $FORCE_START_Y=0;//워터마크가 잘린 사진의 세로 좌표
-
- var $PICTURE_TYPE;// Picture type
- var $PICTURE_MIME;//출력 헤더
-
- /*
- 크기 조정 비율이 1인 경우 크기 조정 높이와 너비에 따라 크기 조정
- */
- var $ZOOM= 1;//확대 유형
- var $ZOOM_MULTIPLE;//확대 비율
- var $ZOOM_WIDTH;//확대 너비
- var $ZOOM_HEIGHT;//확대 높이
-
- /*
- 자르기, 비례 및 고정 길이, 너비
- */
- var $CUT_TYPE=1;//컷 유형
- var $CUT_X=0;//가로 세로 자르기
- var $ CUT_Y=0;// 자르기 세로 좌표
- var $CUT_;//자르기 너비
- var $CUT_HEIGHT=100;//자르기 높이
-
- /*
- 선명하게 하기
- */
- var $SHARP="7.0";//선명도
-
- /*
- 투명도 처리
- */
- var $ALPHA='100 ';//투명도 0-127
- var $ALPHA_X="90";
- var $ALPHA_Y="50";
-
- /*
- 어떤 각도로든 회전
- */
- var $ CIRCUMROTATE="90.0";//부동 소수점 숫자여야 합니다
-
- /*
- 오류 메시지
- */
- var $ERROR=array(
- 'unalviable' =>'관련 사진이 없습니다!'
- );
-
- /*
- 생성자: 함수 초기화
- */
- function __construct($PICTURE_URL)
- {
- $this->get_info($PICTURE_URL);
- }
-
- function get_info($PICTURE_URL)
- {
- /*
- 원본 이미지의 정보를 처리하고 먼저 감지합니다. 사진이 존재하는지, 존재하지 않으면 해당 정보가 제공됩니다.
- */
- @$SIZE=getimagesize($PICTURE_URL);
- if(!$SIZE)
- {
- exit ($this->ERROR['unalviable']);
- }
-
- //원본 사진의 유형, 너비, 높이 정보 가져오기
- $this-> PICTURE_MIME=$SIZE[' mime'];
- $this->PICTURE_;
- $this->PICTURE_HEIGHT=$SIZE[1];
-
- //사진 만들기
- 스위치 ($SIZE[2] )
- {
- 사례 1:
- $this->PICTURE_CREATE=imagecreatefromgif($PICTURE_URL);
- $this->PICTURE_TYPE="imagejpeg";
- $this->PICTURE_EXT ="jpg";
- 중단;
- 사례 2:
- $this->PICTURE_CREATE=imagecreatefromjpeg($PICTURE_URL);
- $this->PICTURE_TYPE="imagegif ";
- $ this->PICTURE_EXT="gif";
- break;
- 사례 3:
- $this->PICTURE_CREATE=imagecreatefrompng($PICTURE_URL);
- $this-> ;PICTURE_TYPE="imagepng" ;
- $this->PICTURE_EXT="png";
- break;
- }
-
- /*
- 16진수에서 10진수로 텍스트 색상 변환
- * /
- preg_match_all("/([0-f]){2,2}/i",$this->FONT_COLOR,$MATCHES);
- if(count($MATCHES)==3 )
- {
- $this->RED=hexdec($MATCHES[0][0]);
- $this->GREEN=hexdec($MATCHES[0][1]);
- $this->BLUE=hexdec($MATCHES[0][2]);
- }
- }
-
- #end of __construct
-
- /*
- 16 기본 색상을 10진수로 변환(R, G, B)
- */
- function hex2dec()
- {
- preg_match_all("/([0-f]){2, 2}/ i",$this->FONT_COLOR,$MATCHES);
- if(count($MATCHES)==3)
- {
- $this->RED=hexdec($MATCHES[ 0][ 0]);
- $this->GREEN=hexdec($MATCHES[0][1]);
- $this->BLUE=hexdec($MATCHES[0][2]) ;
- }
- }
-
- //줌 유형
- function Zoom_type($ZOOM_TYPE)
- {
- $this->ZOOM=$ZOOM_TYPE;
- }
-
- //사진용 Zoom, 높이와 너비가 지정되지 않은 경우, Zoom
- function Zoom()
- {
- //Zoom size
- if($this->ZOOM==0)
- {
- $this->ZOOM_;gt;PICTURE_WIDTH * $this->ZOOM_MULTIPLE;
- $this->ZOOM_HEIGHT=$this->PICTURE_HEIGHT * $this->ZOOM_MULTIPLE;
- }
- //새 트루 컬러 이미지 생성
- $this->TRUE_COLOR=imagecreatetruecolor($this->ZOOM_WIDTH,$this->ZOOM_HEIGHT);
- $WHITE=imagecolorallocate($this-> TRUE_COLOR ,255,255,255);
- imagefilled직사각형($this->TRUE_COLOR,0,0,$this->ZOOM_WIDTH,$this->ZOOM_HEIGHT,$WHITE);
- imagecopyreised($this->TRUE_COLOR , $this->PICTURE_CREATE,0,0,0,0,$this->ZOOM_WIDTH,$this->ZOOM_HEIGHT,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
- }
-
- #확대 끝
- //좌표에 따라 또는 자동으로 이미지 자르기
- function cut()
- {
- $this->TRUE_COLOR=imagecreatetruecolor($this-> CUT_WIDTH,$this->CUT_WIDTH);
- imagecopy($this->TRUE_COLOR,$this->PICTURE_CREATE, 0, 0, $this->CUT_X, $this->CUT_Y,$this- >CUT_WIDTH,$this->CUT_HEIGHT);
- }
-
- #end of cut
- /*
- 사진에 텍스트 또는 그림 넣기
- 워터마크 텍스트
- * /
- 함수 _mark_text()
- {
- $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
- $this->WORD=mb_convert_encoding ($this->FONT_WORD,'utf-8','gb2312');
- /*
- TrueType 글꼴을 사용하여 텍스트 범위 가져오기
- */
- $TEMP = imagettfbbox($this ->FONT_SIZE,0,$this->FONT_PATH,$this->WORD);
- $WORD_LENGTH=strlen($this->WORD);
- $WORD_WIDTH =$TEMP[2] - $TEMP[6];
- $WORD_HEIGHT =$TEMP[3] - $TEMP[7];
- /*
- 텍스트 워터마크의 기본 위치는 오른쪽 하단입니다
- */
- if( $this->WORD_X=="")
- {
- $this->WORD_X=$this->PICTURE_WIDTH-$WORD_WIDTH;
- }
- if($this ->WORD_Y ==="")
- {
- $this->WORD_Y=$this->PICTURE_HEIGHT-$WORD_HEIGHT;
- }
- imagesettile($this->TRUE_COLOR, $this-> PICTURE_CREATE);
- imagefilled직사각형($this->TRUE_COLOR,0,0,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT,IMG_COLOR_TILED);
- $TEXT2=imagecolorallocate($ this->TRUE_COLOR ,$this->RED,$this->GREEN,$this->파랑);
- imagettftext($this->TRUE_COLOR,$this->FONT_SIZE,$this- >ANGLE,$ this->WORD_X,$this->WORD_Y,$TEXT2,$this->FONT_PATH,$this->WORD);
- }
-
- /*
- 워터마크 이미지
- */
- function _mark_picture()
- {
- /*
- 워터마크 이미지 정보 가져오기
- */
- @$SIZE=getimagesize($this-> FORCE_URL);
- if(!$SIZE)
- {
- 종료($this->ERROR['unalviable']);
- }
- $FORCE_PICTURE_;
- $FORCE_PICTURE_HEIGHT= $SIZE[1 ];
- //워터마크 이미지 생성
- switch($SIZE[2])
- {
- 사례 1:
- $FORCE_PICTURE_CREATE=imagecreatefromgif($this->FORCE_URL) ;
- $FORCE_PICTURE_TYPE="gif";
- 중단;
- 사례 2:
- $FORCE_PICTURE_CREATE=imagecreatefromjpeg($this->FORCE_URL);
- $FORCE_PICTURE_TYPE="jpg";
- break;
- 사례 3:
- $FORCE_PICTURE_CREATE=imagecreatefrompng($this->FORCE_URL);
- $FORCE_PICTURE_TYPE="png";
- break;
- }
- /*
- 워터마크의 크기를 결정하고, 대상 이미지의 크기를 생성합니다. 워터마크가 이미지보다 큰 경우 생성되는 이미지의 크기는 워터마크 이미지의 크기입니다. 그렇지 않으면 생성된 이미지의 크기가 원본 이미지 크기가 됩니다.
- */
- $this->NEW_PICTURE=$this->PICTURE_CREATE;
- if($FORCE_PICTURE_WIDTH>$this->PICTURE_WIDTH)
- {
- $CREATE_;gt;FORCE_START_X ;
- }
- else
- {
- $CREATE_;gt;PICTURE_WIDTH;
- }
-
- if($FORCE_PICTURE_HEIGHT>$this->PICTURE_HEIGHT)
- {
- $CREATE_HEIGHT=$FORCE_PICTURE_HEIGHT-$this->FORCE_START_Y;
- }
- else
- {
- $CREATE_HEIGHT=$this->PICTURE_HEIGHT;
- }
- /*
- 创建一个画布
- */
- $NEW_PICTURE_CREATE=imagecreatetruecolor($CREATE_WIDTH,$CREATE_HEIGHT);
- $WHITE=imagecolorallocate($NEW_PICTURE_CREATE,255,255,255);
- /*
- 将背景图拷贝到画布中
- */
- imagecopy($NEW_PICTURE_CREATE, $this->PICTURE_CREATE, 0, 0, 0, 0,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
- $this->TRUE_COLOR=$NEW_PICTURE_CREATE;
- }
- #표시 끝
-
- 함수 alpha_( )
- {
- $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
- $rgb="#CDCDCD";
- $tran_color=" #000000";
- for($j=0;$j<=$this->PICTURE_HEIGHT-1;$j )
- {
- for($i=0;$i<=$this ->PICTURE_WIDTH-1;$i )
- {
- $rgb = imagecolorat($this->PICTURE_CREATE,$i,$j);
- $r = ($rgb >> 16) & 0xFF;
- $g = ($rgb >> 8) & 0xFF;
- $b = $rgb & 0xFF;
- $now_color=imagecolorallocate($this->PICTURE_CREATE,$ r,$g,$b);
- if ($now_color==$tran_color)
- {
- 계속;
- }
- else
- {
- $color=imagecolorallocatealpha( $this->PICTURE_CREATE,$r,$g,$b,$ALPHA);
- imagesetpixel($this->PICTURE_CREATE,$ALPHA_X $i,$ALPHA_Y $j,$color);
- }
- $this->TRUE_COLOR=$this->PICTURE_CREATE;
- }
- }
- }
-
- /*
- 图文旋转:
- 沿y轴旋转
- */
- functionturn_y()
- {
- $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
- for ($x = 0; $x < $this->PICTURE_WIDTH; $x )
- {
- imagecopy($this->PICTURE_CREATE, $this->PICTURE_WIDTH - 1, 0, $x, 0, 1, $this->PICTURE_HEIGHT);
- }
- }
- /*
- 沿X轴旋转
- */
- functionturn_x( )
- {
- $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
- for ($y = 0; $y < $this->PICTURE_HEIGHT; $y )
- {
- imagecopy($this->TRUE_COLOR, $this->PICTURE_CREATE, 0, $this->PICTURE_HEIGHT - $y - 1, 0, $y, $this-> PICTURE_WIDTH, 1);
- }
- }
-
- /*
- 任意角島旋转
- */
- functionturn()
- {
- $this-> ;TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
- imageCopyReised($this->TRUE_COLOR,$this->PICTURE_CREATE,0,0,0,0,$this- >PICTURE_WIDTH,$this->PICTURE_HEIGHT,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
- $WHITE=imagecolorallocate($this->TRUE_COLOR,255,255,255);
- $this- >TRUE_COLOR=이미지 회전($this->TRUE_COLOR, $this->CIRCUMROTATE, $WHITE);
- }
- /*
- 图文锐化
- */
- function Sharp()
- {
- $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this-> ;PICTURE_HEIGHT);
- $cnt=0;
- for ($x=0; $x<$this->PICTURE_WIDTH; $x )
- {
- for ($y=0; $ y<$this->PICTURE_HEIGHT; $y )
- {
- $src_clr1 = imagecolorsforindex($this->TRUE_COLOR, imagecolorat($this->PICTURE_CREATE, $x-1, $y-1) );
- $src_clr2 = imagecolorsforindex($this->TRUE_COLOR, imagecolorat($this->PICTURE_CREATE, $x, $y));
- $r = intval($src_clr2["red"] $ this->SHARP*($src_clr2["red"]-$src_clr1["red"]));
- $g = intval($src_clr2["green"] $this->SHARP*($src_clr2 ["녹색"]-$src_clr1["녹색"]));
- $b = intval($src_clr2["파란색"] $this->SHARP*($src_clr2["파란색"]-$src_clr1[ "파란색"]));
- $r = min(255, max($r, 0));
- $g = min(255, max($g, 0));
- $b = min(255, max($b, 0));
- if (($DST_CLR=imagecolorexact($this->PICTURE_CREATE, $r, $g, $b))==-1)
- $DST_CLR = imagecolorallocate($this->PICTURE_CREATE, $r, $g, $b);
- $cnt ;
- if ($DST_CLR==-1) die("$x에서 색상 할당 실패, $y ($cnt).");
- imagesetpixel($this->TRUE_COLOR, $x, $y, $DST_CLR);
- }
- }
- }
-
- /*
- 将图piece反color处理??
- */
- function return_color()
- {
- /*
- 创建一个画布
- */
- $NEW_PICTURE_CREATE= imageCreate ($ this- & gt; picture_width, $ this- & gt; picture_height); / * * /
- imagecopy($NEW_PICTURE_CREATE, $this->PICTURE_CREATE, 0, 0, 0, 0,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
- $this->TRUE_COLOR=$ NEW_PICTURE_CREATE;
- }
-
- /*
- 生成目标图文并显示
- */
- function show()
- {
- // 判断浏览器,若是IE就不发送头
- if(isset($_SERVER['HTTP_USER_AGENT']))
- {
- $ua = strtoupper($_SERVER['HTTP_USER_AGENT']);
- if(!preg_match('/ ^.*MSIE.*)$/i',$ua))
- {
- header("Content-type:$this->PICTURE_MIME");
- }
- }
- $OUT=$this->PICTURE_TYPE;
- $OUT($this->TRUE_COLOR);
- }
-
- /*
- 生成目标图文并保存
- */
- function save_picture()
- {
- // 以 JPEG 格式将图동상输出到浏览器或文件
- $OUT=$this->PICTURE_TYPE;
- if(function_exists($OUT))
- {
- // 判断浏览器,若是IE就不发送头
- if(isset($_SERVER['HTTP_USER_AGENT']))
- {
- $ua = strtoupper($_SERVER[ 'HTTP_USER_AGENT']);
- if(!preg_match('/^.*MSIE.*)$/i',$ua))
- {
- header("콘텐츠 유형:$this-> ;PICTURE_MIME");
- }
- }
- if(!$this->TRUE_COLOR)
- {
- exit($this->ERROR['unaviable']);
- }
- else
- {
- $OUT($this->TRUE_COLOR,$this->DEST_URL);
- $OUT($this->TRUE_COLOR);
- }
- }
- }
- /*
- 析构函数:释放图文
- */
- function __destruct()
- {
- /*释放图文*/
- imagedestroy ($this->TRUE_COLOR);
- imagedestroy($this->PICTURE_CREATE);
- }
- #수업 종료
- }
- ?>
-
-
- 제제대码
-
多功能, 图文处리, php |