仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 727|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网页编程之PHP图片缩放函数:完成等比例不掉真缩放...

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:36:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
参加PHP开发学习,或许只是一次偶然的想法吧!只是想在走向社会之前体验、学习在一个公司或者说是项目团队之中如何去更有效的沟通、交流、共同合作,还有就是为毕业实习找工作增加伐码。     在PHP网站开辟过程当中,假如你创立的网站触及大批的图片处置,必定触及到图片上传,缩放,而若何坚持图片不掉真,是良多低级PHP网站开辟者对照头疼的一件事,明天David就和人人分享一下若何停止图片缩放。利用之前你需求下载装置GD库,以撑持PHP图片处置。上面咱们联合代码解说详细的PHP图片缩放处置的思绪。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function resizeImage($im,$maxwidth,$maxheight,$name,$filetype)
{
     $pic_width = imagesx($im);
     $pic_height = imagesy($im);

     if(($maxwidth && $pic_width > $maxwidth) ($maxheight && $pic_height > $maxheight))
     {
         if($maxwidth && $pic_width>$maxwidth)
         {
             $widthratio = $maxwidth/$pic_width;
             $resizewidth_tag = true;
         }

         if($maxheight && $pic_height>$maxheight)
         {
             $heightratio = $maxheight/$pic_height;
             $resizeheight_tag = true;
         }

         if($resizewidth_tag && $resizeheight_tag)
         {
             if&#40;$widthratio<$heightratio&#41;
                 $ratio = $widthratio;
             else
                 $ratio = $heightratio;
         }

         if&#40;$resizewidth_tag && !$resizeheight_tag&#41;
             $ratio = $widthratio;
         if&#40;$resizeheight_tag && !$resizewidth_tag&#41;
             $ratio = $heightratio;

         $newwidth = $pic_width * $ratio;
         $newheight = $pic_height * $ratio;

         if&#40;function_exists&#40;"imagecopyresampled"&#41;&#41;
         {
             $newim = imagecreatetruecolor&#40;$newwidth,$newheight&#41;;
            imagecopyresampled&#40;$newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height&#41;;
         }
         else
         {
             $newim = imagecreate&#40;$newwidth,$newheight&#41;;
            imagecopyresized&#40;$newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height&#41;;
         }

         $name = $name.$filetype;
         imagejpeg&#40;$newim,$name&#41;;
         imagedestroy&#40;$newim&#41;;
     }
     else
     {
         $name = $name.$filetype;
         imagejpeg&#40;$im,$name&#41;;
     }           
} 参数申明
$im 图片对象,使用函数之前,你需求用imagecreatefromjpeg()读取图片对象,假如PHP情况撑持PNG,GIF,也可以使用imagecreatefromgif(),imagecreatefrompng()
$maxwidth 界说生成图片的最大宽度(单元:像素)
$maxheight 生成图片的最大高度(单元:像素)
$name 生成的图片名
$filetype 终究生成的图片类型(.jpg/.png/.gif)
代码正文
第3~4行:读取需求缩放的图片实践宽高
第8~26行:经由过程盘算实践图片宽高与需求生成图片的宽高的紧缩比例终究得出停止图片缩放是依据宽度仍是高度停止缩放,以后法式是依据宽度停止图片缩放。假如你想依据高度停止图片缩放,你可以将第22行的语句改成$widthratio>$heightratio
第28~31行:假如实践图片的长度或宽度小于划定生成图片的长度或宽度,则要末依据长度停止图片缩放,要末依据宽度停止图片缩放。
第33~34行:盘算终究缩放生成的图片长宽。
第36~45行:依据盘算出的终究生成图片的长宽改动图片巨细,有两种改动图片巨细的办法:ImageCopyResized()函数在一切GD版本中无效,但其缩放图象的算法对照粗拙。ImageCopyResamples(),其像素插值算法失掉的图象边沿对照光滑,但该函数的速度比ImageCopyResized()慢。
第47~49行:终究生成经由处置后的图片,假如你需求生成GIF或PNG,你需求将imagejpeg()函数改成imagegif()或imagepng()
第51~56行:假如实践图片的长宽小于划定生成的图片长宽,则坚持图片原样,同理,假如你需求生成GIF或PNG,你需求将imagejpeg()函数改成imagegif()或imagepng()。
出格申明
  GD库1.6.2版之前撑持GIF格局,但因GIF格局利用LZW演算法牵扯专利权,因而在GD1.6.2版以后不撑持GIF的格局。假如你是WINDOWS的情况,你只需进入PHP.INI文件找到extension=php_gd2.dll,将#去除,重启APACHE便可,假如你是Linux情况,又想撑持GIF,PNG,JPEG,你需求去下载libpng,zlib,和freetype字体并装置。
  OK,PHP图片紧缩函数完成,最初咱们概述一下全部处置的思绪:
  经由过程盘算实践图片的长宽与划定生成图片的长宽之间的缩放比例,依据实践的需求(依照宽度仍是依照高度停止图片缩放)盘算出终究生成图片的巨细,然后使用PHP图片处置函数对图片停止处置,最初输入图片。
  以上就是关于PHP图片处置中若何对图片停止紧缩并坚持不掉真的函数申明,有疑问或好的建议接待给我留言,下次我将分享在PHP网站开辟建立完成后,因为图片目次没有计划好,咱们该若何对图片停止迁徙的思绪。
  :PHP网站开辟教程-leapsoul.cn版权一切,转载时请以链接模式注明原始出处及本声明,感谢。
在相册系统的开发上,因为采用的是团队分工合作方式,更让我明白了在一个团队之中,团队成员之间的交流沟通的重要性,如果没有很好的沟通交流,成员之间的任务没有分配好。
柔情似水 该用户已被删除
沙发
发表于 2015-2-4 03:28:11 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
第二个灵魂 该用户已被删除
板凳
发表于 2015-2-4 06:03:45 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
admin 该用户已被删除
地板
发表于 2015-2-13 22:09:27 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
海妖 该用户已被删除
5#
发表于 2015-2-22 19:43:09 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
老尸 该用户已被删除
6#
发表于 2015-3-7 01:27:05 | 只看该作者
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
兰色精灵 该用户已被删除
7#
发表于 2015-3-10 12:54:39 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
简单生活 该用户已被删除
8#
发表于 2015-3-12 18:15:38 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
再见西城 该用户已被删除
9#
 楼主| 发表于 2015-3-20 01:21:50 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
乐观 该用户已被删除
10#
发表于 2015-3-22 02:12:25 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
灵魂腐蚀 该用户已被删除
11#
发表于 2015-3-22 04:09:01 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
小妖女 该用户已被删除
12#
发表于 2015-3-29 22:08:26 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
飘飘悠悠 该用户已被删除
13#
发表于 2015-4-5 03:45:39 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
山那边是海 该用户已被删除
14#
发表于 2015-4-5 12:16:14 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
不帅 该用户已被删除
15#
发表于 2015-4-6 20:11:20 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
小魔女 该用户已被删除
16#
发表于 2015-4-16 00:10:01 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
若天明 该用户已被删除
17#
发表于 2015-4-17 14:15:20 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
因胸联盟 该用户已被删除
18#
发表于 2015-4-17 14:38:21 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
谁可相欹 该用户已被删除
19#
发表于 2015-5-1 18:33:41 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
20#
发表于 2015-6-11 03:53:59 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 22:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表