我觉得网络编程与普通编程最大的区别就是,网络编程除了具备普通编程的特性外,还要花很大精力考虑速度的问题。
网站上需要很多图片,现在有很多给用户存放照片,图片的“像册”程序,可以让用户自己上传图片,然后自动缩成小图,可以让你在一个页面看到很多小图,然后点击小图看大图。
注意:在网页中指定长宽显示图片,只能让图片以小尺寸显示,但是大小(容量)不变(可以看看属性),速度自然很慢。真正的缩图是把大图的大小(容量)变小,就是重新生成一个小尺寸的图片文件。我的一个程序有此功能,正在测试:www1.yn.cninfo.net/love
另外,装上GD库,还有很多功能,可以用程序画图,做些特别的计数器之类,还可以支持FREETYPE字体等等,里面函数很多,功能很强大。
先简单说说GIF,JPG,PNG,BMP图的区别:他们都是图形压缩格式。GIF格式单图最多能显示256种颜色,可以保存多图,适合做小动画,容量较大。 JPEG格式,支持24位(16 百万)种颜色,适合于静态图,容量较小。PNG格式,包含GIF,JPEG的所有特点,支持48位颜色,但是容量较大,而且应用不广泛。 BMP格式,颜色少,非常老的压缩格式,对于网络来说太大了。
在PHP中实现大图自动缩成小图其实很简单,装上GD库,用一个小函数就可以了,但是安装GD库很麻烦。在1.6.2 版以前的 GD library 有支持 GIF 格式的功能,但因为 GIF 格式使用的 LZW 演算法牵涉到 Unisys 的专利权,因此在 GD library 1.6.2 版之后不支持 GIF 的格式。
PHP 在 3.0.13 版之后,终于支持了 PNG 的图型格式,使用 PNG 就不怕会有版权的问题了,而且在 PHP 这个版本以后,安装编译时会检查 GD library 支持的是旧的 GIF 格式还是新的 PNG 格式来决定是否使用 GIF 或 PNG 的专用函数。
一,安装GD库:
1.环境:windows2000server+PHP4.0.4+GD+IIS
在WINDOWS中安装很容易,PHP4.0以上版本中自带,装好后在php4/extensions 目录中自带动态链接库:php_gd.dll 。只要在php.ini 中把 ;extension=php_gd.dll 前面的;去掉,然后重起WEBSERVER(IIS或APACHE),就行了。运行一个带有 phpinfo();?>的PHP程序,里面有以下内容就说明可以用了:
gd GD Support enabled GD Version 1.6.2 or higher FreeType Support enabled FreeType Linkage with TTF library JPG Support enabled PNG Support enabled WBMP Support enabled
另外,网上有个php_gd_gif.dll 可以下载,把它改名为php_gd.dll覆盖掉原文件,重起IIS,就可以实现带GIF库的GD库。到 http://php.weblogs.com/php_gd 下载 php_gd_404.zip,解压完成上面操作。这是for PHP4.0.4的,其他版本的PHP不能用,(老板本的PHP4.0.0可以去下载php_gd_gif.zip)。
呵呵,搞定后你的phpinfo()就会多显示一个GIF Support enabled ,但是涉及到版权问题,自己看着办吧。
在LINUX装GD库就比较麻烦了,先简单说说关于APACHE和PHP的安装:当我们在Apache环境下安装PHP的时候,你有三种安装模式可供选择:静态模块、动态模块(DSO)和CGI。
常用的是静态模块,就是APACHE和PHP在一起编译,这样PHP的执行效率高一些,但是PHP要升级或要装GD库之类的附加库时就要把两个都重新编译,很麻烦。动态模块就好办多了,单独重新
编译PHP就行了,具体安装查看PHP中的INSTALL文件。我费了半天劲安装成功了,介绍一点静态模块加GD库+JPEG+PNG的心得:
1)下载所需的库:
下载GD库:建议使用Version 1.8.4 (Stable)稳定版,我编译gd-2.0.1(BETA)时,没通过。
http://www.boutell.com/gd/
下载zlib:
http://www.info-zip.org/pub/infozip/zlib/
下载libpng:建议使用libpng-1.0.6-1-src.tar.gz
http://www.turbolinux.com.cn/pub/mirrors/sourceware/cygwin/contrib/libpng/
下载jpegsrc.v6b.tar.gz:
http://www.turbolinux.com.cn/pub/mirrors/gnu/ghostscript/
以下步骤需要按顺序执行:
2)我用的是LINUX6.1,内核是2.2.12。以ROOT进入,解压所有包,tar -zxvf filename 。然后编译:
3)如果你的LINUX没有安装zlib,必须先安装zilb,进入zlib-1.1.3 执行:
./configure
make
make install
4)进入libpng-1.0.6,可以在LINUX,或DOS下安装,LINUX下需要拷贝他的makefile文件, 执行:
cp scripts/makefile.linux makefile
make
make install
5)进入jpeg-6b 执行:
./configure
make
make install
6a)进入gd-1.8.4
修改Makefile
检查GD库编译时是否加入加入JPEG支持,得修改Makefile文件。
修改Makefile文件,使得:
CFLAGS=-O -DHAVE_LIBPNG -DHAVE_LIBJPEG
LIBS=-lgd -lpng -lz -lm -ljpeg
或者,如果你FREETYPE,XPM,TTF等库都安装了,(安装方法大同小异,自己去找库吧),就改下面:
#CFLAGS=-O -DHAVE_LIBXPM -DHAVE_LIBPNG -DHAVE_LIBJPEG
#-DHAVE_LIBFREETYPE -DHAVE_LIBTTF
#LIBS=-lgd -lpng -lz -ljpeg -lfreetype -lm -lttf
去掉#
此后,编译并安装:
make
make install
(如果需要MYSQL,而你没装,就先装MYSQL,解压,执行: ./configure ; make ; make install
./configure --prefix=/home/mysql ,默认安装路径/usr/local/share/mysql 。)
7)重新编译PHP,我用的是PHP-4.0.6,最好先看看安装文件,more INSTALL,然后执行:
7.1)解压进入apache_1.3.20,需要先考些文件,执行:
./configure --prefix=/home/apache
--activate-module=src/modules/php4/libphp4.a
7.2)解压进入php-4.0.6,编译安装:
./configure --with-mysql --with-apache=../apache_1.3.20
--with-gd=../gd-1.8.4 --with-jpeg-dir=../jpeg-6b --with-png-dir=../libpng-1.0.6
--with-zlib --enable-track-var
(默认安装路径:/usr/local/lib/php)
8)如果你的PHP是和APACHE一起编译的,静态模块,就要重新编译APACHE,我用的是apache_1.3.20
先停掉APACHE:./home/apache/bin/apachectl stop
进入apache_1.3.20,需要改文件src/Configuration:
加入: AddModule modules/php4/libphp4.a
[ 这是APACHE_1.3.x的安装,如果你用的是APACHE_1.2.x,就加入Module php4_module mod_php4.o
然后拷贝libphp4.module到src,修改相应语句为:EXTRA_LIBS=-L. -lphp4 -lgdbm -ldb -L/usr/local/mysql/lib -lmysqlclient
如果你采用动态模块安装,如果是初次安装,修改语句不同,具体查看PHP的INSATLL文件。]
然后执行:
./configure --prefix=/home/apache (prefix=是指定存放路径。不带prefix,默认的是/usr/local/apache)
(也可以直接执行./configure --prefix=/home/apache
--activate-module=src/modules/php4/libphp4.a )
make
make install
9)进入 php-4.0.6 执行
cp php.ini-dist /usr/local/lib/php.ini
10)启动APACHE: ./home/apache/bin/apachectl start
11)运行你的phpinfo()程序,默认APACHE的根目录是/usr/local/apache/htdocs/ 。如过跟上面WINDOWS中显示一样,那就恭喜你安装成功了,可以支持PHP+GD+JPEG+PNG了。不行的话,重装试试。
另外,在gd-1.8.3中有个GIF的补丁,我试过没有成功,看来要版本很低的LINUX才行,如果你成功了,或者在LINUX6.1以上版本中有什么其他办法实现PHP+GD+GIF,麻烦告诉我(E_mail:UBs@ynmail.com)
如果要用GIF图形,操作如下,把上面步骤:6a换成6b
使用gd-1.8.3,加上GIF补丁编译,使GD库包含GIF库:
6b)下载:http://www.boutell.com/gd/http/gd-1.8.3.tar.gz
下载补丁:http://www.webofsin.com/gd-1.8.3-gif.patch
解开,进入gd-1.8.3
打上GIF的补丁:patch -p0
然后此目录中多了一个gd-1.8.3/gd_gif.c
修改Makefile,基本同上。
此后,编译并安装:
其他步骤同上,只要把gd-1.8.4换成gd-1.8.3
二,PHP中大图缩小图的程序实例:(在WINDOWS和LINUX平台都调试通过了。)
1)上传图片页面:(片段)
在中间加入下面程序,(这段程序很有用,可以在前台,用户端判断用户上传的文件类型,控制用户的上传文件)
<script language="JavaScript"> <!-- function CheckForm(theForm) { var fileext=theForm.zhaopian_up.value.substring(theForm.zhaopian_up.value.length-4,theForm.zhaopian_up.value.length) fileext=fileext.toLowerCase() if (!(fileext=='.jpg' || fileext=='.png')) {alert("对不起,不正确的照片文件,必须为*.jpg或*.png文件 !"); theForm.zhaopian_up.focus(); return false; } return true; } // -->
页面中加入上传表单:
<FORM ENCTYPE="multipart/form-data" ACTION="photo_upload2.php" METHOD="POST" onsubmit="return CheckForm(this)"> 注:请先上传照片,后填下表。第一张为封面照片,只能传jpg图片,小于300K,少于9张。 <p class="big"> 上传照片:</p> <input type="file" name="zhaopian_up" size="20"> <INPUT TYPE="submit" value="上传"> </form>
2)处理页面程序,包含判断图片大小,上传拷贝,缩图,生成小图文件,图片ID存入数据库等:(片段)
<? //取得上传文件大小,300K: if ($zhaopian_up_size>307200) { $wrong_massage="对不起,你上传的文件大小超过了300K,请缩小图再传!"; Header("Location:include/wrong_massage.php?wrong_massage=$wrong_massage"); exit(); } //自动缩图$srcFile原文件,大图;$photo_small目标文件,小图;$dstW,$dstH是小图的宽,高。 function makethumb($srcFile,$photo_small,$dstW,$dstH) { $data = GetImageSize($srcFile,&$info); switch ($data[[2]]) { case 1: //图片类型,1是GIF图 $im = @ImageCreateFromGIF($srcFile); break; case 2: //图片类型,2是JPG图 $im = @imagecreatefromjpeg($srcFile); break; case 3: //图片类型,3是PNG图 $im = @ImageCreateFromPNG($srcFile); break; } $srcW=ImageSX($im); $srcH=ImageSY($im); $ni=ImageCreate($dstW,$dstH); ImageCopyResized($ni,$im,0,0,0,0,$dstW,$dstH,$srcW,$srcH); ImageJpeg($ni,$photo_small); //ImageJpeg($ni); //在显示图片时用,把注释取消,可以直接在页面显示出图片。 } $srcFile=$zhaopian_up; //取得文件扩展名: $type=substr(strrchr($zhaopian_up_name,"."),1); $photo_ID=time(); $photo_path="user_picture/$user/"; if(is_dir($photo_path)!=TRUE) mkdir($photo_path,0777); $photo_small=$photo_path."/".$photo_ID."_s.".$type; //小图 $photo_s=fopen($photo_small,"w+"); if ($type=="png" || $type=="jpg") makethumb($srcFile,$photo_small,110,130);//110,130为小图宽,高 ?>
在显示图片的程序中,只需从数据库中读出图片ID,用$photo_path."/".$photo_ID."_s.".$type就是显示小图,加个链接,就可以显示大图$photo_path."/".$photo_ID.".".$type;

win11安装语言包错误0x800f0950什么原因?当我们在给windows11系统安装新语言包时,有时会遇到系统提示错误代码:0x800f0950,导致语言包安装流程无法继续进行下去。导致这个错误代码一般是什么原因,又要怎么解决呢?今天小编就来给大家说明一下win11安装语言包错误0x800f0950的具体解决步骤,有需要的用户们赶紧来看一下吧。win11电脑错误代码0x800f0950解决技巧1、首先按下快捷键“Win+R”打开运行,然后输入:Regedit打开注册表。2、在搜索框中输入“

GoogleDocs在学校和工作环境中变得很流行,因为它提供了文字处理器所期望的所有功能。使用Google文档,您可以创建文档、简历和项目提案,还可以与世界各地的其他用户同时工作。您可能会注意到GoogleDocs不包括MicrosoftWord附带的所有功能,但它提供了自定义文档的能力。使用正确的字体可以改变文档的外观并使其具有吸引力。GoogleDocs提供了大量字体,您可以根据自己的喜好从中选择任何人。如果您希望将自定义字体添加到Google文档,请继续阅读本文。在本文中

Notepad++主要由开发人员用于编辑源代码,由临时用户用于编辑文本。但是,如果您刚刚升级到Windows11,则在您的系统上下载和安装该应用程序可能具有挑战性。因此,我们将讨论在Windows11上下载和安装记事本++。此外,您可以轻松阅读我们关于修复Notepad++在Windows上没有响应的详细指南。记事本++可以在Windows11上运行吗?是的,记事本++可以在Windows11上有效工作,而不会出现兼容性问题。更具体地说,没有臃肿的选项或错误,只需在一个非常小的编辑器中即可。此外

Steam客户端无法识别您计算机上的任何游戏吗?当您从计算机上卸载Steam客户端时,会发生这种情况。但是,当您重新安装Steam应用程序时,它会自动识别已安装文件夹中的游戏。但是,别担心。不,您不必重新下载计算机上的所有游戏。有一些基本和一些高级解决方案可用。修复1–尝试在同一位置安装游戏这是解决这个问题的最简单方法。只需打开Steam应用程序并尝试在同一位置安装游戏即可。步骤1–在您的系统上打开Steam客户端。步骤2–直接进入“库”以查找您拥有的所有游戏。第3步–选择游戏。它将列在“未分类

我们深知MicrosoftWindows11是一个功能齐全且设计吸引人的操作系统。但是,用户一直要求Windows11Lite版本。尽管它提供了重大改进,但Windows11是一个资源匮乏的操作系统,它可能很快就会使旧机器混乱到无法顺利运行的地步。本文将解决您最常问的关于是否有Windows11Lite版本以及是否可以安全下载的问题。跟着!有Windows11Lite版本吗?我们正在谈论的Windows11Lite21H2版本是由Neelkalpa的T

虚拟机怎么安装Win11?近期有用户想要尝试使用VirtualBox虚拟机安装Win11,但是不太清楚具体的操作方法,针对这一情况,小编将为大家演示使用VirtualBox安装Win11的方法,很多小伙伴不知道怎么详细操作,小编下面整理了使用VirtualBox安装Win11的步骤,如果你感兴趣的话,跟着小编一起往下看看吧! 使用VirtualBox安装Win11的步骤 1、要下载VirtualBox,请前往VirtualBox官方下载页面,下载适用于Windows的.exe文件。如果你

<p><strong>HaloInfinite(Campaign)</strong>是一款第一人称射击视频游戏,于2021年11月推出,可供单人和多用户使用。该游戏是Halo系列的延续,适用于Windows、XboxOne和Xbox系列的用户X|S。最近,它还在PC版XboxGamePass上发布,以提高其可访问性。大量玩家报告在尝试使用WindowsPC上的<strong>Xbox应

win11怎么安装无线网卡驱动?很多win11用户都在使用无线网卡作为自己的上网硬件,而无线网卡驱动是启动和趋势无线网卡的重要程序。很多小伙伴在使用无线网卡的过程中,却不清楚该如何安装和更新无线网卡驱动,导致驱动版本落后,影响网络质量,那么,我们该如何安装无线网卡驱动呢?下面就由小编为大家带来win11无线网卡驱动安装教程。win11无线网卡驱动安装教程1、首先,按【Win】键,或点击任务栏上的【开始图标】,然后点击已固定应用下的【设置】;2、打开的设置(Win+i)窗口,左侧点击【Window


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

記事本++7.3.1
好用且免費的程式碼編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中