仓酷云

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

[学习教程] PHP网页设计说说PHP作图(四)(完)

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:17:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
你的确对PHP有兴趣,那么选择教材也是很重要的。       到后面为止,咱们已可以用GD完成作图根基的需求了。但有的时分生怕就要嫌ImageString
能用的五种字体少并且好看,那就要用到上面的函数了。这个函数答应咱们利用TTF字体;但你
必需具有这些字体的文件。

<?php
  Header("Content-type: image/png");
  $im = ImageCreate(400,250);
  $col_back = ImageColorAllocate($im,136,200,152);
  $col_write = ImageColorAllocate($im,255,255,255);
  $col_black = ImageColorAllocate($im,0,0,0);
  
  ImageTTFText($im,160,15,40,220,$col_black,"C:/windows/fonts/verdana.ttf","PNG");
  // 新的内容只要这一句。参数是如许的:
  // $im 不必说了。 160 这个地位,是字号(pt)。15 字串是倾斜角度,程度偏向起逆时针。
  // 40,220是横纵坐标。注重,跟ImageString分歧的是,
  // ImageString里指定的坐标是字串的左上角,而ImageTTFText指定的坐标是左下角。
  // 接上去 $col_black 是色彩喽,
  // "C:/windows/fonts/verdana.ttf"是字体文件途径,在Linux就是"/.../....."。
  // 乃至可所以 "http://...."。然而,我没有如许用过,也不保举如许用。
  // 由于不在本人机械上的器材毕竟是不成靠的,不成以委以重担。
  // 最初就是要输入的字符串了。这是特别要引发注重的,
  // 这里的字符串要用UTF-8编码!!!
  // ASCII码 0~127的字符,ASCII码等于UTF-8编码,所以咱们在输入西文字符串的时分不需求转换。
  // 而假如要输入中文,则需求一系列的转换。
  // www.phpx.com的sadly写了一个GB2312码到UTF-8码转换的函数。
  // 我的另外一篇文章专门剖析了这个函数的任务道理。
  
  ImagePNG($im);
  ImageDestroy($im);
?>

    相似于ImageFontWidth()和ImageFontHeight()匡助咱们盘算ImageString输入字串将要占用的
高度和宽度,ImageTTFBBox可以匡助咱们盘算ImageTTFText输入字符串的情形。它的前往值是一个
8成员的数组,分离是(注重这个按次)左下、右下、右上、左上 的横纵坐标。试一下:

<?
  $p=ImageTTFBBox(160,0,"C:/windows/fonts/verdana.ttf","PNP");
  for($i=0;$i<8;$i+=2)
    echo "(".$p[$i].",".$p[$i+1].")"."<br>";
?>

了局是如许的:
(15,-1)
(306,-1)
(306,-117)
(15,-117)

    为何呈现正数?我也不晓得。这些坐标是相对甚么的?不管它是相对甚么,他们之间的
绝对地位是不会改动的。所以,这些都不太主要,咱们依据左、右侧的横坐标的差和上、下边纵坐标
的差,就足够盘算出应当把左下点布置在甚么地位了。

    好了,讲完了使用TTF字体输入字符串,也特地处理了后面“要想写汉字还得费一些费事”的
遗留口实。以我来看,GD还剩下最初一局部内容――翻开现有图片、处置、从头输入。

    起首,获得图片的信息,是根基的需求。看上面的例子:
<?
  $im=ImageCreateFromPNG("test.png");
  // 这就是翻开已存在的图像。
  // 很复杂,参数是图片途径,前往值是图像ID。
  
  echo "The image's width is ".ImageSX($im).", and height is ".ImageSY($im).".";
  // ImageSX()和ImageSY分离是失掉图像的宽和高,他们都只需求一个参数――已翻开的图像ID。

?>

    别的,还有一个不属于GD库的获得图像信息的函数:GetImageSize。

<?
  $p=GetImageSize("test.png");
  for($i=0;$i<4;$i++) echo $p[$i]."<br>";

?>

了局是如许的:
50
100
3
width="50" height="100"

    可见,该函数前往了一个关于该图片信息的数组,四个元素分离为:前两个是图像的宽、高;
第三个代表图像的格局:1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP。最初一个
元素是用在HTML里的暗示该图像宽、高的字串(真是太便利了!)。好比咱们可以如许用:

<?
....
$pic_name="....";
$pic_size=GetImageSize($pic_name);

?>
<img src="<?echo $pic_name;?>" <?echo $pic_size[3];?>>

.....

    再反复一遍,这个函数不属于GD库,所以,在没有装GD库的PHP情况中也能够利用!!


    缩略图是常常需求的功效。利用GD的“拷贝并调剂巨细”的函数可以很轻易完成缩略图。
   
<?
  // 假定要把恣意巨细的图片减少(缩小)到宽200象素。
  // Header("Content-type: image/jpeg");
  $pic_name="test.jpg";
  $ims=ImageCreateFromJPEG($pic_name);
  // 翻开原图。
  
  $owidth=ImageSX($ims);
  $oheight=ImageSY($ims);
  // 获得原图的宽、高。
  
  $nheight=Round($oheight*200.0/$owidth);
  // 盘算新图的高度。
   
  $imt=ImageCreate(200,$nheight);
  // 创立新图。
  
  ImageCopyResized($imt,$ims,0,0,0,0,200,$nheight,$owidth,$oheight);
  // 拷贝到新图并调剂巨细。
  // 这个函数参数对照多,起首,是目标图像和原图像的ID,
  // 然后的四个参数是目标图像和原图像的拷贝地位的坐标。
  // 如从原图像的 20,30 拷到目标图像的 10,0
  // 则这四个参数是 10,0,20,30。
  // 再接上去的四个也是最初四个参数是目标图像和原图像的拷贝区域的宽高,
  // 如从原图像拷贝 100x50 那末大的区域到目标图像并减少到 50x25
  // 则这四个参数是 50,25,100,50。
  // 而这里我利用的参数,是将原图完全地拷贝到新图,(拷贝地位均为 0,0)
  // 将原始巨细不管缩小仍是减少,均调剂到宽200象素。
  // 200,$nheight 是新图的宽、高,$owidth,$oheight是原图的宽、高。
  // 利用这个函数的时分注重每组参数里,
  // 都是与目标图像相干的参数在前,与原图像相干的参数在后。
  
  ImageJPEG($imt);
  ImageDestroy($imt);
  ImageDestroy($ims);
?>


    好了,说到这里,我的在做GD过程当中的心得就全体说完了。感激人人的存眷!让咱们配合前进!
  你的确对PHP有兴趣,那么选择教材也是很重要的。
不帅 该用户已被删除
沙发
发表于 2015-2-4 10:43:56 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
冷月葬花魂 该用户已被删除
板凳
发表于 2015-2-9 14:44:30 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
若天明 该用户已被删除
地板
发表于 2015-2-27 07:41:07 | 只看该作者
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
柔情似水 该用户已被删除
5#
发表于 2015-3-6 10:43:55 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
透明 该用户已被删除
6#
发表于 2015-3-6 19:14:15 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
只想知道 该用户已被删除
7#
发表于 2015-3-7 02:16:33 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
若相依 该用户已被删除
8#
发表于 2015-3-8 23:06:27 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
小女巫 该用户已被删除
9#
发表于 2015-3-14 15:59:29 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
蒙在股里 该用户已被删除
10#
发表于 2015-3-21 11:39:21 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
老尸 该用户已被删除
11#
发表于 2015-3-26 07:25:55 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
小妖女 该用户已被删除
12#
发表于 2015-3-27 03:28:16 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
山那边是海 该用户已被删除
13#
发表于 2015-3-31 11:54:55 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
再现理想 该用户已被删除
14#
发表于 2015-4-1 02:11:42 | 只看该作者
爱上php,他也会爱上你。
小魔女 该用户已被删除
15#
发表于 2015-4-14 18:50:37 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
乐观 该用户已被删除
16#
发表于 2015-5-5 14:21:45 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
金色的骷髅 该用户已被删除
17#
 楼主| 发表于 2015-6-17 21:14:27 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
精灵巫婆 该用户已被删除
18#
发表于 2015-6-18 03:35:13 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
再见西城 该用户已被删除
19#
发表于 2015-6-18 21:03:00 | 只看该作者
爱上php,他也会爱上你。
活着的死人 该用户已被删除
20#
发表于 2015-7-5 00:29:07 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-3 02:06

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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