<?php
//图像处理类
class Image {
private $file;//图片地址
private $width;//图片长度
private $height;//图片长度
private $type;//图片类型
private $img;//原图的资源句柄
private $new;//新图的资源句柄
//构造方法,初始化
public function __construct($_file) {
$this->file = $_SERVER["DOCUMENT_ROOT"].$_file;
list($this->width, $this->height, $this->type) = getimagesize($this->file);
$this->img = $this->getFromImg($this->file, $this->type);
}
//缩略图(固定长高容器,图像等比例,扩容填充,裁剪)[固定了大小,不失真,不变形]
public function thumb($new_width = 0,$new_height = 0) {
if (empty($new_width) && empty($new_height)) {
$new_width = $this->width;
$new_height = $this->height;
}
if (!is_numeric($new_width) || !is_numeric($new_height)) {
$new_width = $this->width;
$new_height = $this->height;
}
//创建一个容器
$_n_w = $new_width;
$_n_h = $new_height;
//创建裁剪点
$_cut_width = 0;
$_cut_height = 0;
if ($this->width < $this->height) {
$new_width = ($new_height / $this->height) * $this->width;
} else {
$new_height = ($new_width / $this->width) * $this->height;
}
if ($new_width < $_n_w) { //如果新高度小于新容器高度
$r = $_n_w / $new_width; //按长度求出等比例因子
$new_width *= $r; //扩展填充后的长度
$new_height *= $r; //扩展填充后的高度
$_cut_height = ($new_height - $_n_h) / 2; //求出裁剪点的高度
}
if ($new_height < $_n_h) { //如果新高度小于容器高度
$r = $_n_h / $new_height; //按高度求出等比例因子
$new_width *= $r; //扩展填充后的长度
$new_height *= $r; //扩展填充后的高度
$_cut_width = ($new_width - $_n_w) / 2; //求出裁剪点的长度
}
$this->new = imagecreatetruecolor($_n_w,$_n_h);
imagecopyresampled($this->new,$this->img,0,0,$_cut_width,$_cut_height,$new_width,$new_height,$this->width,$this->height);
}
//加载图片,各种类型,返回图片的资源句柄
private function getFromImg($_file, $_type) {
switch ($_type) {
case 1 :
$img = imagecreatefromgif($_file);
break;
case 2 :
$img = imagecreatefromjpeg($_file);
break;
case 3 :
$img = imagecreatefrompng($_file);
break;
default:
Tool::alertBack('警告:此图片类型本系统不支持!');
}
return $img;
}
//图像输出
public function out() {
imagepng($this->new,$this->file);
imagedestroy($this->img);
imagedestroy($this->new);
}
}
?>
使用方法:
$_path = 'D:/test1.png';
$_img = new Image($_path);//$_path为图片文件的路径
$_img->thumb(150, 100);
$_img->out();
分享到:
相关推荐
在asp.net中,上传图片功能或者是常用的,生成缩略图也是常用的。baidu或者google,c#的方法也是很多的,但是一用却发现缩略图不清晰啊,缩略图片太大之类的事情,下面是我在处理图片上的代码,效果不错,所以拿出来...
图片裁剪自动生成缩略图
java 上传图片时生成对应的缩略图,缩略图的大小可手动更改,代码中有详细注释
本资源是基于Springmvc的图片上传案例,并对上传的图片添加了生成缩略图的功能。
java程序开发中,将图片以缩略图形式展示,不错的资料,欢迎下载,共同学习
生成各种图片缩略图,并支持添加水印 一个生成缩略图的函数 一个添加水印的函数 傻瓜式应用很简单
php 上传图片生成缩略图 在PHP中获取EXIF信息应用EXIF函数库中的函数。首先,应该确定EXIF函数是否已经加载,在php.ini文件中查看“extension=php_exif.dll”前是否有分号“;”,如果有则说明未加载,那么就要去掉...
pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图pdf生成缩略图
PHP大图片生成缩略图,可以把大的图片生成小的图片。
图片缩略图展示图片缩略图展示图片缩略图展示图片缩略图展示图片缩略图展示图片缩略图展示图片缩略图展示图片缩略图展示图片缩略图展示图片缩略图展示图片缩略图展示图片缩略图展示图片缩略图展示图片缩略图展示
这是一个PHP程序,其功能可以生成缩略图……
介绍一个php生成任意尺寸图片的缩略图类,生成图片的缩略图,可以指定任意尺寸,生成的图片为png格式,生成的缩略图的文件名,不带后缀。
FLASH+PHP上传,返回值到当前页面,可以自定义传送值到PHP上传处理的页面,这样就可以定义接受图片...update.php逻辑处理,file_upload.php上传类,可定义源文件名或者随机命名和缩略图大小. 没分了,来赚点积分花花
* 修改后:当出现这种情况后,图片会按最小边进行缩略,即如果原图高为150,宽为150,要求宽150,高120,那生成的图片就是120*120。总之,就是不会出现网页被 * 撑破的或变形的情况。 * * 使用方法: * zoom...
asp.net做的生成图片缩略图
相关知识struts2,fileupload等,实现图片上传并生成缩略图。单文件上传,图片展示直接使用jQuery FancyBox,效果不错,值得初学者研究学习。
分享一个php生成图片缩略图代码类,设置初始化变量,按比例生成缩略图,生成背静缩略图。
能够根据图片自动算出缩略图,减少了网页的内容的大小,使网页能够更快速的加载。
c# 生成图片缩略图
thinkPHP 3.2.2 生成图片缩略图 + 裁剪 +加水印的方法 thinkPHP 3.2.2 生成缩略图方法很简单。 以上文件内容是摘自thinkPHP手册