建议大家使用FireFox、Opera、Safri、IE8+等主流浏览器访问本站,否则可能会出现不兼容等问题!

福彩3d带连线 专业版:GD函数库(三)—等比缩放及水印实现

PHP学习 凶恶的方块 3193次浏览 已收录 2个评论

前言:

广西快乐双彩官方网站 www.y6mg.cn 今晚月黑风高,正直10点钟我要下班的时候,我一打开一楼的门,发现……玻璃展示柜子那恍恍惚惚有些黑影,我定睛一看!尽然……尽然…… 尽然是人?。?!男人,还有女人??!吓死我了。然而基佬马君收到一个订货单,尼玛10点KFC不接受外送,这哥们9点59分打电话定外送,还住在上海滩花园来回至少半个小时??闪幕小?,基佬说这家是个妹纸!

妹纸怎么了!妹纸就可以9点59分59秒定外卖么!我那义正言辞的暴脾气。我抡起电瓶就冲了出去~马君教我骑车,强烈的?;び嫠呶?,不能让妹纸饿肚子,历经艰辛万苦,冒着被卡车撞死和被劫色抛尸的危险……在路上,在路上,尼玛我电瓶剩了一格点,于是我果断换成了人工模式…

后来的后来,十分钟之前,我不认识你,你不认识我,我们还是陌生人。这样一次偶然的夜晚邂逅,月色隐约栖身于乌云中,缥缈晦涩…… 尼玛??!这妹子毛都长脸上了! 带不带着这么坑的??!卧槽。

正文:

好像扯了些没用的啊 ,说好的GD库呢?(王语双流可以止步于此了),那好,今天我们就来学习GD函数库PHP对图片文件的处理等比缩放和图片水印的实现。

GD函数库(三)—等比缩放及水印实现

等比缩放实现过程:

其中的过程实现是,通过计算获得原图与新图的长和宽,再利用imagecopyresampled();或者imagecopyresized();函数实现等比缩放。前者最广泛使用,获得的图像较为平滑,但执行速度稍慢,后者图像粗糙但执行速度快。

?<?php
$sourceFile="img/1.jpg"//;原图路径
$sourceNew="img/new.jpg";//生成图路径
$srcwidth="636";//原图宽度
$srcheight="592";//原图高度
$persentage=0.5;//缩放比例
/*获得新图大小信息*/
$NewWidth=ceil($srcwidth*$persentage);//大小进一取整 宽
$NewHeight=ceil($srcheight*$persentage);//新图高
$New_Image=imagecreatetruecolor($NewWidth,$NewHeight);//创建新图画布
$Image=imagecreatefromjpef($sourceFile);//载入原图
/**等比缩放,获得图像**/
imagecopyresampled($New_Image,$Image,0,0,0,0,$NewWidth,$NewHeight,$srcwidth,$srcheight);
/**输出图像**/
imagejpeg($New_Image,$sourceNew);
imagedestroy($NewHeight_Image,Image);//从内存中清除资源
?>

有的同学要说,难道我每次都要打开图片获得长宽写入程序么?当然不是,我们有imagesize();函数,它能返回一个关于图片大小,图片格式信息的数组print_r();打印下看看吧。

水印功能实现过程:

实现过程,先载入图像,然后通过imagettfbbox();函数计算当使用“内容字体,倾斜角,大小”时候所需要的虚拟文本框大小。之后通过imagettftext();函数向其中X,Y坐标点写入文字。

<?php
$size=20;
$angle=0;
$fontfile="simpo.ttf";//trutype字体文件路径
$text="广西快乐双彩官方网站 www.y6mg.cn";
$file_name="1.jpg";
$img=imagecreatefromjpeg($file_name);//载入图像
$white=imagecolorallocate($img,255,255,255);//分配颜色
$arr=imagettfbbox($size,$angle,$fontfile,$text);//计算虚拟文本像素区域数组
$width=arr[2]-arr[6];
$height=arr[7]-arr[3];
$x=100;$y=100;//水印位置
imagettftext($size,$angle,$fontfile,$x,$y,$text,$white);
imagejpeg($img,"new.jpg");
imagedestroy($img);
?>

imagettfbbox() 返回一个含有 8 个单元的数组表示了文本外框的四个角:

0 左下角 X 位置
1 左下角 Y 位置
2 右下角 X 位置
3 右下角 Y 位置
4 右上角 X 位置
5 右上角 Y 位置
6 左上角 X 位置
7 左上角 Y 位置

看到imagettfbbox();数组返回的value意义,很好理解长宽怎么计算了吧,干脆背下来width=key:

2-6 height=key:7-3 PS:因为是十字坐标,所以存在负值。

后记:

家里蚊子好多的说,受不了了,洗洗睡了,敲了半天键盘。最近感觉学的东西都忘干净了,没时间练笔,打工的生活,干活睡觉,干活睡觉……好似上班挨到大限,很纠结。


方块网络 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明GD函数库(三)—等比缩放及水印实现!
喜欢 (2)or分享 (0)
avatar
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. avatar
    天天都在学习啊
    宋稳2015-07-19 18:14 回复 Windows XP | Chrome 42.0.2311.152
  • 日本不是那就你是喽。[大笑] 2019-03-13
  • 豆浆-热门标签-华商生活 2019-03-10
  • 这是很容易检验的!家庭是按需分配的,也是各尽所能的。笑博士在家中,除按需分配外,还有什么是需要从家中按劳分配的,跟大家讲讲如何? 2019-03-10
  • 纪念人民日报创刊70周年 重温历史动人瞬间 2018-08-12
  • 645| 26| 880| 999| 362| 563| 508| 600| 515| 735|