메뉴 건너뛰기

프로그램언어

조회 수 259 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
<?
class Image {
    
    var $file;
    var $image_width;
    var $image_height;
    var $width;
    var $height;
    var $ext;
    var $types = array('','gif','jpeg','png','swf');
    var $quality = 80;
    var $top = 0;
    var $left = 0;
    var $crop = false;
    var $type;
    
    function Image($name='') {
        $this->file = $name;
        $info = getimagesize($name);
        $this->image_width = $info[0];
        $this->image_height = $info[1];
        $this->type = $this->types[$info[2]];
        $info = pathinfo($name);
        $this->dir = $info['dirname'];
        $this->name = str_replace('.'.$info['extension'], '', $info['basename']);
        $this->ext = $info['extension'];
    }
    
    function dir($dir='') {
        if(!$dir) return $this->dir;
        $this->dir = $dir;
    }
    
    function name($name='') {
        if(!$name) return $this->name;
        $this->name = $name;
    }
    
    function width($width='') {
        $this->width = $width;
    }
    
    function height($height='') {
        $this->height = $height;
    }
    
    function resize($percentage=50) {
        if($this->crop) {
            $this->crop = false;
            $this->width = round($this->width*($percentage/100));
            $this->height = round($this->height*($percentage/100));
            $this->image_width = round($this->width/($percentage/100));
            $this->image_height = round($this->height/($percentage/100));
        } else {
            $this->width = round($this->image_width*($percentage/100));
            $this->height = round($this->image_height*($percentage/100));
        }
        
    }
    
    function crop($top=0, $left=0) {
        $this->crop = true;
        $this->top = $top;
        $this->left = $left;
    }
    
    function quality($quality=80) {
        $this->quality = $quality;
    }
    
    function show() {
        $this->save(true);
    }
    
    function save($show=false) {
 
        if($show) @header('Content-Type: image/'.$this->type);
        
        if(!$this->width && !$this->height) {
            $this->width = $this->image_width;
            $this->height = $this->image_height;
        } elseif (is_numeric($this->width) && empty($this->height)) {
            $this->height = round($this->width/($this->image_width/$this->image_height));
        } elseif (is_numeric($this->height) && empty($this->width)) {
            $this->width = round($this->height/($this->image_height/$this->image_width));
        } else {
            if($this->width<=$this->height) {
                $height = round($this->width/($this->image_width/$this->image_height));
                if($height!=$this->height) {
                    $percentage = ($this->image_height*100)/$height;
                    $this->image_height = round($this->height*($percentage/100));
                }
            } else {
                $width = round($this->height/($this->image_height/$this->image_width));
                if($width!=$this->width) {
                    $percentage = ($this->image_width*100)/$width;
                    $this->image_width = round($this->width*($percentage/100));
                }
            }
        }
        
        if($this->crop) {
            $this->image_width = $this->width;
            $this->image_height = $this->height;
        }
 
        if($this->type=='jpeg') $image = imagecreatefromjpeg($this->file);
        if($this->type=='png') $image = imagecreatefrompng($this->file);
        if($this->type=='gif') $image = imagecreatefromgif($this->file);
        
        $new_image = imagecreatetruecolor($this->width, $this->height);
        imagecopyresampled($new_image, $image, 0, 0, $this->top, $this->left, $this->width, $this->height, $this->image_width, $this->image_height);
        
        $name = $show ? null: $this->dir.DIRECTORY_SEPARATOR.$this->name.'.'.$this->ext;
    
        if($this->type=='jpeg') imagejpeg($new_image, $name, $this->quality);
        if($this->type=='png') imagepng($new_image, $name);
        if($this->type=='gif') imagegif($new_image, $name);
 
        imagedestroy($image); 
        imagedestroy($new_image);
        
    }
    
}
  
 
/*  사용방법
$re_image = new Image(이미지 파일명);
$re_image -> width(200);
$re_image -> height(300);
$re_image -> save();
*/
?>

 


  1. No Image 26Mar
    by
    2021/03/26 Views 832 

    PHP 쉘 스크립트

  2. No Image 12Jan
    by
    2023/01/12 Views 367 

    php 암호화 복호화 , 간단한 암호화

  3. No Image 12Apr
    by
    2014/04/12 Views 20395 

    PHP 에서의 소켓(Socket) 통신

  4. No Image 07Mar
    by
    2017/03/07 Views 29790 

    php 엑셀 다운로드 구현

  5. No Image 24Jun
    by
    2019/06/24 Views 1946 

    PHP 외부 XML 파싱 하기

  6. No Image 12Jan
    by
    2023/01/12 Views 212 

    PHP 이미지 리사이즈 함수 imagecopyresized

  7. No Image 12Jan
    by 조쉬
    2023/01/12 Views 259 

    php 이미지 리사이징 image resizing

  8. No Image 19Jul
    by
    2018/07/19 Views 5455 

    PHP 특정 디렉토리에 있는 파일 갯수 구하기

  9. No Image 14Apr
    by
    2015/04/14 Views 22401 

    PHP 파일 다루기

  10. No Image 27Feb
    by
    2014/02/27 Views 19794 

    php 파일 다운로드 구현

  11. No Image 12Apr
    by
    2014/04/12 Views 21703 

    php 파일 다운로드 구현

  12. No Image 12Jan
    by
    2023/01/12 Views 229 

    PHP 파일 업로드 FORM 처리

  13. No Image 27Feb
    by
    2014/02/27 Views 20234 

    php 파일 확장자

  14. No Image 04Jul
    by
    2018/07/04 Views 5804 

    PHP 파일크기 단위 붙이기 (용량 변환) file size conversion source code

  15. No Image 12Jan
    by
    2023/01/12 Views 236 

    PHP 하위 디렉토리 포함 디렉토리 리스트 출력

  16. No Image 27Oct
    by
    2018/10/27 Views 3790 

    PHP 확장 모듈을 이용한 C 라이브러리 사용

  17. No Image 04Jul
    by
    2018/07/04 Views 4057 

    PHP 휴대폰번호 짜르기 (preg_replace) "-" 넣기. 형식바꾸기

  18. No Image 13Apr
    by
    2017/04/13 Views 19505 

    PHP, $_SERVER 변수

  19. No Image 08Jan
    by
    2019/01/08 Views 1429 

    php/asp에서 가상번호 부여와 가상번호를 거꾸로 적용

  20. No Image 06Mar
    by
    2017/03/06 Views 21695 

    PHPExcel 클래스를 이용해 Excel 2007~2010 의 xlsx 파일 읽기 (100만 행 까지)

Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved