PHP头条
热点:

PHP图片等比缩放类SimpleImage使用方法和使用实例分享


 这篇文章主要介绍了PHP图片等比缩放类SimpleImage使用方法和使用实例分享,需要的朋友可以参考下

使用方法示例:

设定宽度,等比例缩放

 

 代码如下:

<?php

   include('SimpleImage.php');

   $image = new SimpleImage();

   $image->load('picture.jpg');

   $image->resizeToWidth(250);

   $image->save('picture2.jpg');?>

设定高度,等比例缩放

 代码如下:

<?php

   include('SimpleImage.php');

   $image = new SimpleImage();

   $image->load('picture.jpg');

   $image->resizeToHeight(500);

   $image->save('picture2.jpg');

   $image->resizeToHeight(200);

   $image->save('picture3.jpg');?>

按比例,缩放至50%

 代码如下:

<?php

   include('SimpleImage.php');

   $image = new SimpleImage();

   $image->load('picture.jpg');

   $image->scale(50);

   $image->save('picture2.jpg');?>

缩放后直接输出到屏幕

 代码如下:

<?php

   header('Content-Type: image/jpeg');

   include('SimpleImage.php');

   $image = new SimpleImage();

   $image->load('picture.jpg');

   $image->resizeToWidth(150);

   $image->output();?>

 

 

 

使用例子:

 代码如下:

<?php

include("SimpleImage.php");//图片处理类在下面

 

$url="http://f3.v.veimg.cn/meadincms/1/2013/0703/20130703100937552.jpg";

$picfile = down($url);//下载图片(下载图片的路径可以处理完成后清空,这里未进行处理)

$res = new SimpleImage();//图片处理实例

$res = $res->load($picfile);

$tmpfile = tempfile().'.jpg';//创建一个路径文件用来保存图片

$width = '30';//设定图片的宽度

$res->resizeToWidth($width);

$res->save($tmpfile);//把处理后的图片保存(无.jpg后缀)

//这里总共产生了3个文件,一个是下载的图片文件,一个是临时文件,最后一个是处理的图片文件。需要优化清理掉前两个文件。

 

 

 

 

function down($url)

{

        $http = array();

        $header = "http://f3.v.veimg.cn";

        if ($header) {

            $http['header'] = $header;

        }

 

        $http['timeout'] = 50;

 

        $ctx = stream_context_create(array(

            'http' => $http,

        )); 

        $content = @file_get_contents($url, 0, $ctx);

        sleep(1);

 

        if (!$content) {

            return false;

        }

 

        $tmpfile = tempfile();

 

        file_put_contents($tmpfile, $content);

 

        return $tmpfile;

}

 

function tempfile()

{

        $path = dirname(__FILE__);

        $path .= '/spider/' . date('Ymd') . '/'.date('His').'-' . (int)(time() / 300);

 

        if (!file_exists($path)) {

            mkdir($path, 0777, true);

        }

 

        do {

            $file = $path . '/' . dechex(mt_rand());

        }

        while (file_exists($file));

 

        touch($file);

 

        return $file;

}

 

 

 

 

图片处理类源码(官网地址:http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/):

 

代码如下:

<?php

 

/*

* File: SimpleImage.php

* Author: Simon Jarvis

* Copyright: 2006 Simon Jarvis

* Date: 08/11/06

* Link: http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php

*

* This program is free software; you can redistribute it and/or

* modify it under the terms of the GNU General Public License

* as published by the Free Software Foundation; either version 2

* of the License, or (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details:

* http://www.gnu.org/licenses/gpl.html

*

*/

 

class SimpleImage {

 

    var $image;

    var $image_type;

 

    function load($filename) {

 

        $image_info = getimagesize($filename);

        $this->image_type = $image_info[2];

        if( $this->image_type == IMAGETYPE_JPEG ) {

 

            $this->image = @imagecreatefromjpeg($filename);

        } elseif( $this->image_type == IMAGETYPE_GIF ) {

 

            $this->image = @imagecreatefromgif($filename);

        } elseif( $this->image_type == IMAGETYPE_PNG ) {

 

            $this->image = @imagecreatefrompng($filename);

        }

 

        if (!$this->image) {

            return false;

        }

 

        return $this;

    }

 

    function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {

 

        if( $image_type == IMAGETYPE_JPEG ) {

            imagejpeg($this->image,$filename,$compression);

        } elseif( $image_type == IMAGETYPE_GIF ) {

 

            imagegif($this->image,$filename);

        } elseif( $image_type == IMAGETYPE_PNG ) {

 

            imagepng($this->image,$filename);

        }

        if( $permissions != null) {

 

            chmod($filename,$permissions);

        }

    }

    function output($image_type=IMAGETYPE_JPEG) {

 

        if( $image_type == IMAGETYPE_JPEG ) {

            imagejpeg($this->image);

        } elseif( $image_type == IMAGETYPE_GIF ) {

 

            imagegif($this->image);

        } elseif( $image_type == IMAGETYPE_PNG ) {

 

            imagepng($this->image);

        }

    }

    function getWidth() {

 

        return imagesx($this->image);

    }

    function getHeight() {

 

        return imagesy($this->image);

    }

    function resizeToHeight($height) {

 

        $ratio = $height / $this->getHeight();

        $width = $this->getWidth() * $ratio;

        $this->resize($width,$height);

    }

 

    function resizeToWidth($width) {

        if ($this->getWidth() < $width) {

            $width = $this->getWidth();

        }

        $ratio = $width / $this->getWidth();

        $height = $this->getheight() * $ratio;

        $this->resize($width,$height);

    }

 

    function scale($scale) {

        $width = $this->getWidth() * $scale/100;

        $height = $this->getheight() * $scale/100;

        $this->resize($width,$height);

    }

 

    function resize($width,$height) {

        $new_image = imagecreatetruecolor($width, $height);

        imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());

        $this->image = $new_image;

    }

 

 

    function resize2($width,$height) {

        $new_image = imagecreatetruecolor($width, $height);

        if( $this->image_type == IMAGETYPE_GIF || $this->image_type == IMAGETYPE_PNG ) {

            $current_transparent = imagecolortransparent($this->image);

            if($current_transparent != -1) {

                $transparent_color = imagecolorsforindex($this->image, $current_transparent);

                $current_transparent = imagecolorallocate($new_image, $transparent_color['red'], $transparent_color['green'], $transparent_color['blue']);

                imagefill($new_image, 0, 0, $current_transparent);

                imagecolortransparent($new_image, $current_transparent);

            } elseif( $this->image_type == IMAGETYPE_PNG) {

                imagealphablending($new_image, false);

                $color = imagecolorallocatealpha($new_image, 0, 0, 0, 127);

                imagefill($new_image, 0, 0, $color);

                imagesavealpha($new_image, true);

            }

        }

        imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());

        $this->image = $new_image;   

    }

 

}

www.phpzy.comtrue/php/14213.htmlTechArticlePHP图片等比缩放类SimpleImage使用方法和使用实例分享 这篇文章主要介绍了PHP图片等比缩放类SimpleImage使用方法和使用实例分享,需要的朋友可以参考下 使用方法示例: 设定宽度,等比例...

相关文章

    暂无相关文章
相关频道:

PHP之友评论

今天推荐