PHP图片等比缩放类SimpleImage使用方法和使用实例分享
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
发布时间:2016-12-29 来源:查字典编辑
摘要:使用方法示例:设定宽度,等比例缩放复制代码代码如下:设定高度,等比例缩放复制代码代码如下:按比例,缩放至50%复制代码代码如下:缩放后直接输...

使用方法示例:

设定宽度,等比例缩放

复制代码 代码如下:

<?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;

}

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新php教程学习
热门php教程学习
编程开发子分类