Вход Регистрация
Файл: admin/inc/imagemanipulation.php
Строк: 153
<?php if(!defined('IN_GS')){ die('you cannot load this page directly.'); }

/**
 * Generate standard thumbnails
 * @param  string $path path to image
 * @param  string $name file name
 * @uses   GD
 */

function genStdThumb($path,$name){

    
//gd check
    
$php_modules get_loaded_extensions();
    if(!
in_arrayi('gd'$php_modules)) return;

    if (!
defined('GSIMAGEWIDTH')) {
        
$width 200//New width of image      
    
} else {
        
$width GSIMAGEWIDTH;
    }

    
$ext lowercase(pathinfo($name,PATHINFO_EXTENSION));    
    
    if (
$ext == 'jpg' || $ext == 'jpeg' || $ext == 'gif' || $ext == 'png' )    {
        
        
$thumbsPath GSTHUMBNAILPATH.$path;
        
        if (!(
file_exists($thumbsPath))) {
            if (
defined('GSCHMOD')) { 
                
$chmod_value GSCHMOD
            } else {
                
$chmod_value 0755;
            }
            
mkdir($thumbsPath$chmod_value);
        }
    }

    
$targetFile GSDATAUPLOADPATH.$path.$name;
    
    
//thumbnail for post
    
$imgsize getimagesize($targetFile);
        
    switch(
$ext){
            case 
"jpeg":
            case 
"jpg":
                    
$image imagecreatefromjpeg($targetFile);    
            break;
            case 
"png":
                    
$image imagecreatefrompng($targetFile);
            break;
            case 
"gif":
                    
$image imagecreatefromgif($targetFile);
            break;
            default:
                    return;
            break;
    }
        
    
$height $imgsize[1]/$imgsize[0]*$width//This maintains proportions
    
    
$src_w $imgsize[0];
    
$src_h $imgsize[1];
    
    
$picture imagecreatetruecolor($width$height);
    
imagealphablending($picturefalse);
    
imagesavealpha($picturetrue);
    
$bool imagecopyresampled($picture$image0000$width$height$src_w$src_h); 
    
    if(
$bool)    {    
        
$thumbnailFile $thumbsPath "thumbnail." $name;
        
        switch(
lowercase(substr($targetFile, -3))) {
            case 
"jpg":
                
$bool2 imagejpeg($picture,$thumbnailFile,85);
            break;
            case 
"png":
                
imagepng($picture,$thumbnailFile);
            break;
            case 
"gif":
                
imagegif($picture,$thumbnailFile);
            break;
        }
    }
    
    
imagedestroy($picture);
    
imagedestroy($image);

    return 
true;
}


/**
 * ImageManipulation
 *
 * @author       Tech @ Talk In Code
 * @link http://www.talkincode.com/
 * @version   1.0
 * @copyright 2009 Talk In Code
 *
 * @package GetSimple
 * @subpackage Images
 * @uses GD
 */
class ImageManipulation {

    
/**
     * An array to hold the settings for the image. Default values for
     * images are set here.
     *
     * @var array
     */
    
public $image = array('targetx'=>0
                            
'targety'=>0,
                            
'quality'=>75);
    
    
/**
     * A boolean value to detect if an image has not been created. This
     * can be used to validate that an image is viable before trying 
     * resize or crop.
     *
     * @var boolean
     */
    
public $imageok false;
    
    
/**
     * Contructor method. Will create a new image from the target file.
     * Accepts an image filename as a string. Method also works out how
     * big the image is and stores this in the $image array.
     *
     * @param string $imgFile The image filename.
     */
    
public function ImageManipulation($imgfile)
    {
        
//detect image format
        
$this->image["format"] = preg_replace("/.*.(.*)$/""\1"$imgfile);
        
$this->image["format"] = strtoupper($this->image["format"]);
        
        
// convert image into usable format.
        
if ( $this->image["format"] == "JPG" || $this->image["format"] == "JPEG" ) {
            
//JPEG
            
$this->image["format"] = "JPEG";
            
$this->image["src"]    = ImageCreateFromJPEG($imgfile);
        } elseif( 
$this->image["format"] == "PNG" ){
            
//PNG
            
$this->image["format"] = "PNG";
            
$this->image["src"]    = imagecreatefrompng($imgfile);
        } elseif( 
$this->image["format"] == "GIF" ){
            
//GIF
            
$this->image["format"] = "GIF";
            
$this->image["src"]    = ImageCreateFromGif($imgfile);
        } elseif ( 
$this->image["format"] == "WBMP" ){
            
//WBMP
            
$this->image["format"] = "WBMP";
            
$this->image["src"]    = ImageCreateFromWBMP($imgfile);
        } else {
            
//DEFAULT
            
return false;
        }

        
// Image is ok
        
$this->imageok true;
        
        
// Work out image size
        
$this->image["sizex"]  = imagesx($this->image["src"]);
        
$this->image["sizey"] = imagesy($this->image["src"]);
    }

    
/**
     * Sets the height of the image to be created. The width of the image
     * is worked out depending on the value of the height.
     *
     * @param int $height The height of the image.
     */
    
public function setImageHeight($height=100)
    {
        
//height
        
$this->image["sizey_thumb"] = $height;
        
$this->image["sizex_thumb"]  = ($this->image["sizey_thumb"]/$this->image["sizey"])*$this->image["sizex"];
    }
    
    
/**
     * Sets the width of the image to be created. The height of the image
     * is worked out depending on the value of the width.
     *
     * @param int $size The width of the image.
     */
    
public function setImageWidth($width=100)
    {
        
//width
        
$this->image["sizex_thumb"]  = $width;
        
$this->image["sizey_thumb"] = ($this->image["sizex_thumb"]/$this->image["sizex"])*$this->image["sizey"];
    }

    
/**
     * This method automatically sets the width and height depending
     * on the dimensions of the image up to a maximum value.
     *
     * @param int $size The maximum size of the image.
     */
    
public function resize($size=100)
    {
        if ( 
$this->image["sizex"] >= $this->image["sizey"] ) {
            
$this->image["sizex_thumb"]  = $size;
            
$this->image["sizey_thumb"] = ($this->image["sizex_thumb"]/$this->image["sizex"])*$this->image["sizey"];
        } else {
            
$this->image["sizey_thumb"] = $size;
            
$this->image["sizex_thumb"]  = ($this->image["sizey_thumb"]/$this->image["sizey"])*$this->image["sizex"];
        }
    }

    
/**
     * This method sets the cropping values of the image. Be sure
     * to set the height and with of the image if you want the
     * image to be a certain size after cropping.
     *
     * @param int $x The x coordinates to start cropping from.
     * @param int $y The y coordinates to start cropping from.
     * @param int $w The width of the crop from the x and y coordinates.
     * @param int $h The height of the crop from the x and y coordinates.
     */
    
public function setCrop($x$y$w$h)
    {
        
$this->image["targetx"] = $x;
        
$this->image["targety"] = $y;
        
$this->image["sizex"] = $w;
        
$this->image["sizey"] = $h;
    }
    
    
/**
     * Sets the JPEG output quality.
     *
     * @param int $quality The quality of the JPEG image.
     */
    
public function setJpegQuality($quality=75)
    {
        
//jpeg quality
        
$this->image["quality"] = $quality;
    }

    
/**
     * Shows the image to a browser. Sets the correct image format in a header.
     */
    
public function show()
    {
        
//show thumb
        
header("Content-Type: image/".$this->image["format"]);

        
$this->createResampledImage();
        
        if ( 
$this->image["format"]=="JPG" || $this->image["format"]=="JPEG" ) {
            
//JPEG
            
imageJPEG($this->image["des"], ""$this->image["quality"]);
        } elseif ( 
$this->image["format"] == "PNG" ) {
            
//PNG
            
imagePNG($this->image["des"]);
        } elseif ( 
$this->image["format"] == "GIF" ) {
            
//GIF
            
imageGIF($this->image["des"]);
        } elseif ( 
$this->image["format"] == "WBMP" ) {
            
//WBMP
            
imageWBMP($this->image["des"]);
        }
    }
    
    
/**
     * Private method to run the imagecopyresampled() function with the parameters that have been set up.
     * This method is used by the save() and show() methods.
     */
    
private function createResampledImage()
    {
        
/* change ImageCreateTrueColor to ImageCreate if your GD not supported ImageCreateTrueColor function*/
        
if ( isset($this->image["sizex_thumb"]) && isset($this->image["sizey_thumb"]) ) {        
            
$this->image["des"] = ImageCreateTrueColor($this->image["sizex_thumb"], $this->image["sizey_thumb"]);
            
imagecopyresampled($this->image["des"], $this->image["src"], 00$this->image["targetx"], $this->image["targety"], $this->image["sizex_thumb"], $this->image["sizey_thumb"], $this->image["sizex"], $this->image["sizey"]);
        } else {
            
$this->image["des"] = ImageCreateTrueColor($this->image["sizex"], $this->image["sizey"]);
            
imagecopyresampled($this->image["des"], $this->image["src"], 00$this->image["targetx"], $this->image["targety"], $this->image["sizex"], $this->image["sizey"], $this->image["sizex"], $this->image["sizey"]);
        }    
    }
    
    
/**
     * Saves the image to a given filename, if no filename is given then a default is created.
     *
     * @param string $save The new image filename.
     */    
    
public function save($save="")
    {
        
//save thumb
        
if ( empty($save) ) {
            
$save strtolower("./thumb.".$this->image["format"]);
        }
        
header("Content-Type: image/".$this->image["format"]);
        
$this->createResampledImage();

        if ( 
$this->image["format"] == "JPG" || $this->image["format"] == "JPEG" ) {
            
//JPEG
            
imageJPEG($this->image["des"], $save$this->image["quality"]);
        } elseif ( 
$this->image["format"] == "PNG" ) {
            
//PNG
            
imagePNG($this->image["des"], $save);
        } elseif ( 
$this->image["format"] == "GIF" ) {
            
//GIF
            
imageGIF($this->image["des"], $save);
        } elseif ( 
$this->image["format"] == "WBMP" ) {
            
//WBMP
            
imageWBMP($this->image["des"], $save);
        }
        
        
header("Content-Type: text/html");
    }
}
Онлайн: 0
Реклама