喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 帮助

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
     
标题: 利用gd库生成高质量缩略图更新版。。  
 
cooant
高级会员
Rank: 4
被特殊照顾的VIP会员


UID 25785
精华 0
积分 567
帖子 553
金钱 567 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2004-1-16
来自 中华人民共和国
状态 离线
高质量缩略图更新版。。

类:resizeimage.php

<?
/***************************************/
/*功  能:利用PHP的GD库生成高质量的缩略图*/
/*运行环境:PHP5.01/GD2*/
/*类说明:可以选择是/否裁图。

          如果裁图则生成的图的尺寸与您输入的一样。
          原则:尽可能多保持原图完整

          如果不裁图,则按照原图比例生成新图
          原则:根据比例以输入的长或者宽为基准*/
/*参 数:$img:源图片地址
         $wid:新图的宽度
         $hei:新图的高度
         $c:是否裁图,1为是,0为否*/
/* Author:  antplus         */
/* version: 1.1             */
/* QQ:      38188141        */
/* MSN:     [email]antplus@163.net[/email] */
/***************************************/
class resizeimage
{
    
//图片类型
    
var $type;
    
//实际宽度
    
var $width;
    
//实际高度
    
var $height;
    
//改变后的宽度
    
var $resize_width;
    
//改变后的高度
    
var $resize_height;
    
//是否裁图
    
var $cut;
    
//源图象
    
var $srcimg;
    
//目标图象地址
    
var $dstimg;
    
//临????建的图象
    
var $im;

    function 
resizeimage($img$wid$hei,$c)
    {
        
$this->srcimg $img;
        
$this->resize_width $wid;
        
$this->resize_height $hei;
        
$this->cut $c;
        
//图片的类型
        
$this->type substr(strrchr($this->srcimg,"."),1);
        
//初始化图象
        
$this->initi_img();
        
//目标图象地址
        
$this -> dst_img();
        
//--
        
$this->width imagesx($this->im);
        
$this->height imagesy($this->im);
        
//生成图象
        
$this->newimg();
        
ImageDestroy ($this->im);
    }
    function 
newimg()
    {
        
//改变后的图象的比例
        
$resize_ratio = ($this->resize_width)/($this->resize_height);
        
//实际图象的比例
        
$ratio = ($this->width)/($this->height);
        if((
$this->cut)=="1")
        
//裁图
        
{
            if(
$ratio>=$resize_ratio)
            
//高度优先
            
{
                
$newimg imagecreatetruecolor($this->resize_width,$this->resize_height);
                
imagecopyresampled($newimg$this->im0000$this->resize_width,$this->resize_height, (($this->height)*$resize_ratio), $this->height);
                
ImageJpeg ($newimg,$this->dstimg);
            }
            if(
$ratio<$resize_ratio)
            
//宽度优先
            
{
                
$newimg imagecreatetruecolor($this->resize_width,$this->resize_height);
                
imagecopyresampled($newimg$this->im0000$this->resize_width$this->resize_height$this->width, (($this->width)/$resize_ratio));
                
ImageJpeg ($newimg,$this->dstimg);
            }
        }
        else
        
//不裁图
        
{
            if(
$ratio>=$resize_ratio)
            {
                
$newimg imagecreatetruecolor($this->resize_width,($this->resize_width)/$ratio);
                
imagecopyresampled($newimg$this->im0000$this->resize_width, ($this->resize_width)/$ratio$this->width$this->height);
                
ImageJpeg ($newimg,$this->dstimg);
            }
            if(
$ratio<$resize_ratio)
            {
                
$newimg imagecreatetruecolor(($this->resize_height)*$ratio,$this->resize_height);
                
imagecopyresampled($newimg$this->im0000, ($this->resize_height)*$ratio$this->resize_height$this->width$this->height);
                
ImageJpeg ($newimg,$this->dstimg);
            }
        }
    }
    
//初始化图象
    
function initi_img()
    {
        if(
$this->type=="jpg")
        {
            
$this->im imagecreatefromjpeg($this->srcimg);
        }
        if(
$this->type=="gif")
        {
            
$this->im imagecreatefromgif($this->srcimg);
        }
        if(
$this->type=="png")
        {
            
$this->im imagecreatefrompng($this->srcimg);
        }
    }
    
//图象目标地址
    
function dst_img()
    {
        
$full_length  strlen($this->srcimg);
        
$type_length  strlen($this->type);
        
$name_length  $full_length-$type_length;
        
$name         substr($this->srcimg,0,$name_length-1);
        
$this->dstimg $name."_small.".$this->type;
    }
}
?>
使用方法:

<?
require "resizeimage.php";
$resizeimage = new resizeimage("test.jpg""200""200""0");
?>
<table width="200" height="200" cellspacing="0" cellpadding="0" border="0">
    <tr>
        <td bgcolor="#000000" align="center" valign="middle"><a href="test.jpg" target="_blank"><img src="test_small.jpg" border="0"></a><td>
    </tr>
</table>




精品PHP中文手册:
http://www.tripow.com/manual/php/
我的博客
http://www.cooant.com/
2004-11-22 06:23 PM#1
查看资料  访问主页  发短消息  顶部
 
cooant
高级会员
Rank: 4
被特殊照顾的VIP会员


UID 25785
精华 0
积分 567
帖子 553
金钱 567 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2004-1-16
来自 中华人民共和国
状态 离线
[推荐阅读] 如何防止用戶利用貼圖區上載其他檔案?
居然不感兴趣。那还天天问。
我顶!




精品PHP中文手册:
http://www.tripow.com/manual/php/
我的博客
http://www.cooant.com/
2004-11-22 11:07 PM#2
查看资料  访问主页  发短消息  顶部
 
dracula (dracula)
注册会员
Rank: 2
中级会员



UID 24468
精华 0
积分 116
帖子 118
金钱 116 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2003-11-8
状态 离线
[推荐阅读] Cfml大家用了吗
刚下载了一份,多谢。
2004-11-22 11:13 PM#3
查看资料  发短消息  顶部
 
bg9cx (bg9cx)
注册会员
Rank: 2
一般会员



UID 24977
精华 0
积分 58
帖子 59
金钱 58 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2003-12-2
状态 离线
[推荐阅读] 免费php空间测试使用
支持!收藏了
2004-11-22 11:48 PM#4
查看资料  发短消息  顶部
 
daijie_1 (daijie_1)
中级会员
Rank: 3Rank: 3
中级会员



UID 21621
精华 0
积分 239
帖子 239
金钱 239 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2003-7-12
状态 离线
[推荐阅读] 免费空间学习用啊哈哈
有没有谁给出linux9.0下怎么装GD啊!装不上GD要这些也没用啊!
2004-11-23 12:27 AM#5
查看资料  发短消息  QQ . .   顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.033213 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP