php 剪切图片类

php 剪切图片类

php 剪切图片类
php 剪切图片类

今天花了很多时间并试验了很多次法终于把php中imagecopyresampled函数搞明白了,特意为此封装了一个resize_image.class.php类来处理需要剪切的图片,与大家共同分享…..

<br />
<?php
/**
bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )

$dst_image:新建的图片

$src_image:需要载入的图片

$dst_x:设定需要载入的图片在新图中的x坐标

$dst_y:设定需要载入的图片在新图中的y坐标

$src_x:设定载入图片要载入的区域x坐标

$src_y:设定载入图片要载入的区域y坐标

$dst_w:设定载入的原图的宽度(在此设置缩放)

$dst_h:设定载入的原图的高度(在此设置缩放)

$src_w:原图要载入的宽度

$src_h:原图要载入的高度
*/

/*
 * Created on 2011-5-11
 * author 孤独求学人
 */
class resize_image {
    var $type;//图片的类型
    var $height;//原始图片的高度
    var $width;//原始图片的宽度
    var $resize_height;//剪切后图片的高度
    var $resize_width;//剪切后图片的宽度
    var $iscut;//是否裁图
    var $srcimage;//原始图像
    var $target_dir;//目标图片地址
    var $image;//创建临时图片
    function resize_image($img,$w,$h,$c,$path) {
        $this->srcimage = $img;<br />
        $this->resize_width = $w;<br />
        $this->resize_height = $h;<br />
        $this->iscut = $c;<br />
        //$this->dstimage = $path;<br />
        $this->type = strtolower(substr(strrchr($this->srcimage,"."),1));<br />
        //初始化图像<br />
        $this->initi_img();<br />
        //目标地址<br />
        $this->dir_image($path);<br />
        //获取原图片的高<br />
        $this->height = imagesy($this->image);<br />
        //获取原来图片的宽<br />
        $this->width = imagesx($this->image);<br />
        //生成新图片<br />
        $this->new_image();<br />
        imagedestroy($this->image);<br />
    }<br />
    //创建新图片<br />
    function new_image(){<br />
        //缩小后的比例<br />
        $resize_ratio = ($this->resize_width) /($this->resize_height);//剪切后的图片的宽度/剪切后图片的高度<br />
        //原来图片的比例<br />
        $src_ratio = $this->width / $this->height;//原来图片的宽度/原来图片的高度<br />
        if($this->iscut == '1'){//裁图<br />
            //高度优先<br />
           if($src_ratio >= $resize_ratio){<br />
               //用剪切后的图片的大小新建一个真彩色图像<br />
                 $newImage = imagecreatetruecolor($this->resize_width,$this->resize_height);<br />
                 //重采样拷贝部分图像并调整大小<br />
                 //imagecopyresampled ( resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)<br />
              imagecopyresampled($newImage, $this->image, 0, 0, ($this->width - ($resize_ratio*$this->height))/2,0, ($this->resize_height*$this->width)/$this->height,$this->resize_height, $this->width, $this->height);<br />
                ImageJpeg ($newImage,$this->target_dir);<br />
           }<br />
           //宽度优先<br />
           if($src_ratio < $resize_ratio){
                 //用剪切后的图片的大小新建一个真彩色图像
                $newImage = imagecreatetruecolor($this->resize_width,$this->resize_height);<br />
                //重采样拷贝部分图像并调整大小<br />
                   //imagecopyresampled ( resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)<br />
                imagecopyresampled($newImage, $this->image, 0, 0,0,($this->height-((1/$resize_ratio)*$this->width))/2,$this->resize_width,(($this->resize_width*$this->height)/$this->width), $this->width, $this->height);<br />
                ImageJpeg ($newImage,$this->target_dir);<br />
           }<br />
        }<br />
    }<br />
    //初始化图像<br />
    function initi_img(){<br />
        switch($this->type){<br />
            case 'jpg':<br />
            $this->image = imagecreatefromjpeg($this->srcimage);//从 JPEG 文件或 URL 新建一图像<br />
            break;<br />
            case 'gif':<br />
            $this->image = imagecreatefromgif($this->srcimage);//从 png 文件或 URL 新建一图像<br />
            break;<br />
            case 'png':<br />
            $this->image = imagecreatefrompng($this->srcimage);//从 png 文件或 URL 新建一图像<br />
            break;<br />
            case 'bmp':<br />
            $this->image = imagecreatefromwbmp($this->srcimage);//从 WBMP 文件或 URL 新建一图像<br />
            break;<br />
        }<br />
    }<br />
    //目标地址<br />
    function dir_image($path){<br />
        $this->target_dir = $path;<br />
    }<br />
}<br />
?><br />

php 剪切图片类》有2个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.