php缩放库,php的缩放图像类使用

标题: php的缩放图像类使用

作者:李英江

日期: 2006-11-25 14:54:05

转载请保留作者内容: http://www.cgsir.com

使用缩略图有个好处就是可以减少用户下载的时间,为此要在上传图片时生成一张比原图小的图片,一般的PHP空间都支持GD图形库,我的网站上GD版本是2.0.28,你可以自己写图像生成程序,php手册有现成的例子,应该不难,但为了更快完成这功能,试用网上下载的一个缩放图像类,感觉也蛮方便的。

注意:确认你的php支持GD库,你可以通过使用 <?php phpinfo(); ?>查看你的GD版本,以下我的网站GD版本

0818b9ca8b590ca3270a3433284dd417.png

如果你的PHP没有这些内容,那么说明你的php还不支持这个库,我针对windows 和linux分别作说明。

Windows:

找到你的php.ini的配置文件,打开GD动态链接库就可以了。也就是说找到“;extension=php_gd2.dll”把分号去掉,重起apache就可以了。

Linux:

# tar -zxf gd-2.0.33.tar.gz

# cd gd-2.0.33

# ./configure --prefix=/usr/local/gd2 --with-jpeg=/usr/local/jpeg6/ --with-png --with-zlib --with-freetype=/usr/local/freetype/

# make; make install

使用缩放图像类:

1. 包含类 include_once('image_class.php');   // 用于生成缩略图类

2. 生成缩略图 120*90  0为不载图 $small_img = new resizeimage($image_full_dir, 120, 90, 0); ($image_full_dir图像存储路径)

以下是完整图像类image_class.php 源码:

/***************************************/

/*功  能:利用PHP的GD库生成高质量的缩略图*/

/*运行环境:PHP5.01/GD2*/

/*类说明:可以选择是/否裁图。

如果裁图则生成的图的尺寸与您输入的一样。

原则:尽可能多保持原图完整

如果不裁图,则按照原图比例生成新图

原则:根据比例以输入的长或者宽为基准*/

/*参 数:$img:源图片地址

$wid:新图的宽度

$hei:新图的高度

$c:是否裁图,1为是,0为否*/

/***************************************/

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->im, 0, 0, 0, 0, $this->resize_width,$this->resize_height, (($this->height)*$resize_ratio), $this->height);                ImageJpeg ($newimg,$this->dstimg);            }            if($ratioresize_width,$this->resize_height);                imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $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->im, 0, 0, 0, 0, $this->resize_width, ($this->resize_width)/$ratio, $this->width, $this->height);                ImageJpeg ($newimg,$this->dstimg);            }            if($ratioresize_height)*$ratio,$this->resize_height);                imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, ($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."s.".$this->type;    }}?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网页设计工资一般多少_理发师工资一般多少钱一个月

现在社会物价上涨&#xff0c;就连理发的价格也上涨了&#xff0c;但是虽然价格上涨了&#xff0c;质量却未必保证了。理发师在现在生活中可是少不了的&#xff0c;尤其是对女性朋友来说&#xff0c;发型设计可是至关重要的&#xff0c;因此虽然理发的价格上涨&#xff0c;但是…

五笔字型键盘字根图_手机输入法的派别之争:九宫格和全键盘,哪个更科学?...

本 文 约 3376 字阅 读 需 要10 min有人的地方&#xff0c;就有江湖。而在手机输入法的江湖里&#xff0c;也分为两个派别。一个是九宫格输入法&#xff0c;另一个则是全键盘输入法。该问题的敏感程度&#xff0c;完全不亚于“咸甜豆腐脑”之争。…

java多线程编程_《java多线程编程实战指南》读书笔记 -- 基本概念

展开并发&#xff1a;多个线程操作相同资源&#xff0c;保证线程安全&#xff0c;合理使用资源高并发&#xff1a;服务能同时处理多个请求&#xff0c;提高程序性能测试上下文切换工具Lmbench3 测量上下文切换时长vmstat 测量上下文切换次数减少上下文切换无锁并发编程&#xf…

vue企业网站模板_模板网站VS定制网站,企业如何选择?

步入互联网时代&#xff0c;企业需要建设属于自己的网站&#xff0c;网站建设到底是选择模板网站&#xff0c;还是定制网站呢&#xff1f;笔者接下来跟大家详细分析一下。网站建设的类型一、网站建设的类型模板网站模板型网站是用已经成形的网站为框架进行套用&#xff0c;根据…

这张磁盘有写保护_架构师不得不了解的硬件知识 - 磁盘阵列RAID

概述什么是RAID&#xff1f; RAID &#xff08; Redundant Array of Independent Disks &#xff09;即独立磁盘冗余阵列&#xff0c;通常简称为磁盘阵列。简单地说&#xff0c; RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统&#xff0c;从而提供比单个磁盘更高的存储…

金蝶二次开发好跳槽吗_金蝶财务软件不会操作怎么办?

还在为不会操作金蝶软件而头疼吗?今天&#xff0c;小编和大家分享一些金蝶软件实操技巧&#xff0c;让大家更快速的完成工作&#xff01;接下来&#xff0c;跟着小编一起来学习吧&#xff5e;1、新增凭证快捷键2、修改、删除凭证3、凭证审核说明&#xff1a;4、凭证过账说明&a…

可信计算3.0工程初步pdf_查校 | 英国大学工业工程与运筹学专业40个授课硕士+研究Mphil/Phd 项目汇总...

关注“留学壹周刊”&#xff0c;回复专业名称&#xff0c;如“金融”&#xff0c;可以自由查询相关资料介绍本篇微信主要包括如下内容&#xff1a;1、2020Fall英国工业工程与运筹学专业授课类硕士(共26个项目)2、2020Fall英国工业工程与运筹学专业研究类PHD(共14个项目)3、2020…

怎么把此电脑放到桌面_Win10我的电脑怎么放到桌面

1/5点击右键选择“个性化”2/5进入后&#xff0c;点击“主题”3/5在主题页面的右侧点击“桌面图标设置”4/5最后勾选“计算机”5/5再点击“确定”即可

vmware虚拟机安装win7_图文分享虚拟机怎么安装win7系统

最近有朋友问有什么方法可以在不重装系统的情况下体验到其他的操作系统。那就是使用虚拟机吧&#xff0c;下面就以win7为例给大家分享一下在虚拟机安装WIN7的步骤。1&#xff0c;打开运行虚拟机&#xff0c;然后点击界面左上方的“文件”按钮&#xff0c;菜单栏选择“新建虚拟机…

usb接口供电不足_1个USB接口变成4个?什么东西那么“牛”?请你花2分钟了解一下...

USB分线器可以说是许多电脑用户日常生活中必不可少的配件&#xff0c;有了这东西&#xff0c;能让你的USB接口多出许多&#xff0c;关键是通过延长线可以把USB接口放置在你随手可得的地方&#xff0c;可谓是一款家庭、办公都很实用的小配件。USB分线器通常可以分为4、6、8个USB…

js中的new file_JS中的new操作符

一、什么是new&#xff1f;众所周知&#xff0c;在JS中&#xff0c;new的作用是通过构造函数来创建一个实例对象。像下面这样&#xff1a;(和普通函数不一样&#xff0c;当函数用作 构造函数 时&#xff0c;首字母一般要大写&#xff0c;以作区分。)function Foo(name) { th…

css不继承父类样式_提升你的Python编程能力,细说类的继承,拿走不谢

今天咱们聊点啥呢&#xff1f;要不还是聊点Python基础的东东吧&#xff0c;大家已经都知道啦&#xff0c;Python呢是一种面向对象的脚本编程语言&#xff0c;那面向对象的编程语言呢&#xff0c;都会支持面向对象的三大特性&#xff0c;你知道是哪三大特性吗&#xff1f;当然是…

R 回归 虚拟变量na_【R语言进阶】Logistic回归及哑变量设置

点击上方“蓝字”&#xff0c;我们一起分析数据Logistic回归是最常用的多因素回归模型,在医学研究中,常用于研究疾病的危险因素,下面我们一起来看看,R语言是如何实现Logistic回归的。1第一步 导入数据首先&#xff0c;在excel里全选数据集&#xff0c;右键复制。然后&#xff0…

logisticregression参数_通俗地说逻辑回归【Logistic regression】算法(二)sklearn逻辑回归实战...

前情提要&#xff1a;通俗地说逻辑回归【Logistic regression】算法&#xff08;一&#xff09; 逻辑回归模型原理介绍上一篇主要介绍了逻辑回归中&#xff0c;相对理论化的知识&#xff0c;这次主要是对上篇做一点点补充&#xff0c;以及介绍sklearn 逻辑回归模型的参数&#…

tensorflow适用于python版本_tensorflow用python哪个版本更好?

tensorflow用python哪个版本&#xff1f;一、安装anaconda tensorflow是基于python脚本语言的&#xff0c;因此需要安装python, 当然还需要安装numpy、scipy、six、matplotlib等几十个扩展包。如果一个个安装&#xff0c;装到啥时候去&#xff1f;&#xff08;我曾经光安装scip…

php parse url ctf,【SSRF】如何绕过filter_var(), preg_match() 和 parse_url()

0x01 前言这篇文章是在我看完一片国外安全大佬写的文章后对其进行总结并翻译得到的。0x02 正文之绕过filter_var和preg_match本片文章主要深入一种php ssrf的技术——如何绕过例如filter_var(), preg_match()和parse_url()等函数。本次我进行测试的php版本全部为php v5.6.30php…

python json解析_python读取json文件并解析

原博文 2018-07-09 18:35 − # -*- coding: utf-8 -*- import os import json import sys reload(sys) sys.setdefaultencoding(utf-8) filelistos.listdir(E:\\log\\files\\) for ite... 相关推荐 2019-12-05 20:03 − 如何使用 Python 语言来编码和解码 JSON 对象。 JSON(Jav…

python中文词云图代码_Python简单实现词云图代码及步骤解析

一、安装 wordcloud pip install wordcloud 二、加载包、设置路径 import os from wordcloud import WordCloud import matplotlib.pyplot as plt os.chdir(E:\\pyspace\\tmp) 三、词云图示例 1、默认参数示例 text Keep it simple and stupid. wc WordCloud() # 实例化词云图…

usb大容量存储设备驱动程序_20年历史了!为什么USB接口还存在?网友:原来如此...

USB接口作为计算机领域应用最广泛的数据接口&#xff0c;已有20多年的历史。和它的名字一样&#xff0c;USB(Universal Serial Bus)最初也是为统一的数据接口而设计的。你几乎可以用它来代替计算机的各种外部数据接口&#xff0c;只需为它设计相应的驱动程序。随着市场对USB接口…

linux终端炫酷命令,你不得不知道11个炫酷的 Linux 终端命令

很多朋友都很喜欢Linux &#xff0c;Linux是一套免费使用和自由传播的类Unix操作系统&#xff0c;是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统&#xff0c;Linux是一款免费的操作系统&#xff0c;用户可以通过网络或其他途径免费获得&#xff0c;并可…