Помогите найти class для оброботки....

Discussion in 'PHP' started by kdk, 3 Jun 2010.

  1. kdk

    kdk Elder - Старейшина

    Joined:
    8 Nov 2006
    Messages:
    112
    Likes Received:
    5
    Reputations:
    -3
    Посоветуйте класс для обработки картинок так что бы все обрабатывал расширения((jpeg,jpe,jpg),gif).Обрабатывал масштаб картинок и можно было накладывать на них другие картинки. И что бы он не сильно тяжелый был! Заранее СПС
     
  2. Flenat

    Flenat New Member

    Joined:
    10 Apr 2010
    Messages:
    8
    Likes Received:
    2
    Reputations:
    0
    Класс из DLE вполне удобный.

    PHP:
    class thumbnail {
        var 
    $img;
        var 
    $watermark_image_light;
        var 
    $watermark_image_dark;
        
        function 
    thumbnail($imgfile) {
            
    //detect image format

            
    $info = @getimagesize($imgfile); 

            if( 
    $info[2] == 2 ) {
                
    $this->img['format'] = "JPEG";
                
    $this->img['src'] = @imagecreatefromjpeg( $imgfile );
            } elseif( 
    $info[2] == 3 ) {
                
    $this->img['format'] = "PNG";
                
    $this->img['src'] = @imagecreatefrompng( $imgfile );
            } elseif( 
    $info[2] == 1 ) {
                
    $this->img['format'] = "GIF";
                
    $this->img['src'] = @imagecreatefromgif( $imgfile );
            } else {
                echo 
    "Not Supported File! Thumbnails can only be made from .jpg, gif and .png images!";
                @
    unlink( $imgfile );
                exit();
            }

            if( !
    $this->img['src'] ) {
                echo 
    "Not Supported File! Thumbnails can only be made from .jpg, gif and .png images!";
                @
    unlink( $imgfile );
                exit();
            
            }

            
    $this->img['lebar'] = @imagesx( $this->img['src'] );
            
    $this->img['tinggi'] = @imagesy( $this->img['src'] );
            
    $this->img['lebar_thumb'] = $this->img['lebar'];
            
    $this->img['tinggi_thumb'] = $this->img['tinggi'];
            
    //default quality jpeg
            
    $this->img['quality'] = 90;
            
        }
        
        function 
    size_auto($size = 100, $site = 0) {
            global 
    $gd_version;
            
            
    $site = intval( $site );
            
            if( 
    $this->img['lebar'] <= $size and $this->img['tinggi'] <= $size ) {
                
    $this->img['lebar_thumb'] = $this->img['lebar'];
                
    $this->img['tinggi_thumb'] = $this->img['tinggi'];
                return 
    0;
            }
            
            switch (
    $site) {
                
                case 
    "1" :
                    if( 
    $this->img['lebar'] <= $size ) {
                        
    $this->img['lebar_thumb'] = $this->img['lebar'];
                        
    $this->img['tinggi_thumb'] = $this->img['tinggi'];
                        return 
    0;
                    } else {
                        
    $this->img['lebar_thumb'] = $size;
                        
    $this->img['tinggi_thumb'] = ($this->img['lebar_thumb'] / $this->img['lebar']) * $this->img['tinggi'];
                    }
                    
                    break;
                
                case 
    "2" :
                    if( 
    $this->img['tinggi'] <= $size ) {
                        
    $this->img['lebar_thumb'] = $this->img['lebar'];
                        
    $this->img['tinggi_thumb'] = $this->img['tinggi'];
                        return 
    0;
                    } else {
                        
    $this->img['tinggi_thumb'] = $size;
                        
    $this->img['lebar_thumb'] = ($this->img['tinggi_thumb'] / $this->img['tinggi']) * $this->img['lebar'];
                    }
                    
                    break;
                
                default :
                    
                    if( 
    $this->img['lebar'] >= $this->img['tinggi'] ) {
                        
    $this->img['lebar_thumb'] = $size;
                        
    $this->img['tinggi_thumb'] = ($this->img['lebar_thumb'] / $this->img['lebar']) * $this->img['tinggi'];
                    
                    } else {
                        
                        
    $this->img['tinggi_thumb'] = $size;
                        
    $this->img['lebar_thumb'] = ($this->img['tinggi_thumb'] / $this->img['tinggi']) * $this->img['lebar'];
                    
                    }
                    
                    break;
            }
            
            if( 
    $gd_version == 1 ) {
                
    $this->img['des'] = imagecreate( $this->img['lebar_thumb'], $this->img['tinggi_thumb'] );
                @
    imagecopyresized( $this->img['des'], $this->img['src'], 0, 0, 0, 0, $this->img['lebar_thumb'], $this->img['tinggi_thumb'], $this->img['lebar'], $this->img['tinggi'] );
            } elseif( 
    $gd_version == 2 ) {
                
    $this->img['des'] = imagecreatetruecolor( $this->img['lebar_thumb'], $this->img['tinggi_thumb'] );
                @
    imagecopyresampled( $this->img['des'], $this->img['src'], 0, 0, 0, 0, $this->img['lebar_thumb'], $this->img['tinggi_thumb'], $this->img['lebar'], $this->img['tinggi'] );
            }
            
            
    $this->img['src'] = $this->img['des'];
            return 
    1;
        }
        
        function 
    jpeg_quality($quality = 90) {
            
    //jpeg quality
            
    $this->img['quality'] = $quality;
        }
        
        function 
    save($save = "") {
            
            if( 
    $this->img['format'] == "JPG" || $this->img['format'] == "JPEG" ) {
                
    //JPEG
                
    imagejpeg( $this->img['src'], $save, $this->img['quality'] );
            } elseif( 
    $this->img['format'] == "PNG" ) {
                
    //PNG
                
    imagepng( $this->img['src'], $save );
            } elseif( 
    $this->img['format'] == "GIF" ) {
                
    //GIF
                
    imagegif( $this->img['src'], $save );
            }
            
            
    imagedestroy( $this->img['src'] );
        }
        
        function 
    show() {
            if( 
    $this->img['format'] == "JPG" || $this->img['format'] == "JPEG" ) {
                
    //JPEG
                
    imageJPEG( $this->img['src'], "", $this->img['quality'] );
            } elseif( 
    $this->img['format'] == "PNG" ) {
                
    //PNG
                
    imagePNG( $this->img['src'] );
            } elseif( 
    $this->img['format'] == "GIF" ) {
                
    //GIF
                
    imageGIF( $this->img['src'] );
            }
            
            
    imagedestroy( $this->img['src'] );
        }
        
        
    // *************************************************************************
        
    function insert_watermark($min_image) {
            global 
    $config;
            
    $margin = 7;
            
            
    $this->watermark_image_light = ROOT_DIR . '/templates/' . $config['skin'] . '/dleimages/watermark_light.png';
            
    $this->watermark_image_dark = ROOT_DIR . '/templates/' . $config['skin'] . '/dleimages/watermark_dark.png';
            
            
    $image_width = imagesx( $this->img['src'] );
            
    $image_height = imagesy( $this->img['src'] );
            
            list ( 
    $watermark_width, $watermark_height ) = getimagesize( $this->watermark_image_light );
            
            
    $watermark_x = $image_width - $margin - $watermark_width;
            
    $watermark_y = $image_height - $margin - $watermark_height;
            
            
    $watermark_x2 = $watermark_x + $watermark_width;
            
    $watermark_y2 = $watermark_y + $watermark_height;
            
            if( 
    $watermark_x < 0 or $watermark_y < 0 or $watermark_x2 > $image_width or $watermark_y2 > $image_height or $image_width < $min_image or $image_height < $min_image ) {
                return;
            }
            
            
    $test = imagecreatetruecolor( 1, 1 );
            
    imagecopyresampled( $test, $this->img['src'], 0, 0, $watermark_x, $watermark_y, 1, 1, $watermark_width, $watermark_height );
            
    $rgb = imagecolorat( $test, 0, 0 );
            
            
    $r = ($rgb >> 16) & 0xFF;
            
    $g = ($rgb >> 8) & 0xFF;
            
    $b = $rgb & 0xFF;
            
            
    $max = min( $r, $g, $b );
            
    $min = max( $r, $g, $b );
            
    $lightness = ( double ) (($max + $min) / 510.0);
            
    imagedestroy( $test );
            
            
    $watermark_image = ($lightness < 0.5) ? $this->watermark_image_light : $this->watermark_image_dark;
            
            
    $watermark = imagecreatefrompng( $watermark_image );
            
            
    imagealphablending( $this->img['src'], TRUE );
            
    imagealphablending( $watermark, TRUE );
            
            
    imagecopy( $this->img['src'], $watermark, $watermark_x, $watermark_y, 0, 0, $watermark_width, $watermark_height );
            
            
    imagedestroy( $watermark );
        
        }

    }
     
  3. Flenat

    Flenat New Member

    Joined:
    10 Apr 2010
    Messages:
    8
    Likes Received:
    2
    Reputations:
    0
    Использование:


    include_once ENGINE_DIR . '/classes/thumb.class.php';

    $thumb = new thumbnail(картика.расширение); // 1323.jpg
    $thumb->size_auto( размер в пиксклях); // 100
    $thumb->jpeg_quality( качество ); //10-100
    и т.д....
     
    1 person likes this.