(独孤九剑)--图像处理

【一】图像处理概括

(1)处理应用场景:①验证码;②图片缩放;③图片水印;④密保口令卡;⑤柱状图;⑥二维码

(2)拓展:

                  ①水印:一般就是显示图片出处的地方,有时在中间有时在右下角..就是那个有一点透明的图标状字体或网站。就比如说你在一个网站:XX网上下载一个图片,然后图片的某些地方就会有XX网的标志或者logo。这就是水印!

【二】gd2配置文件修改

(1)图像处理主要就是应用PHP的GD系统函数

GD系统可以创建处理包括GIF,JPG,JEPG,WBMP,XPM等多种格式图像。更方便的是,PHP可以直接将图像数据流输出到浏览器。想要在PHP里使用图像处理功能,需要连带GD库一起编译PHP。

可以使用PHP中的图像函数来获取下列格式图像的大小:JPEG,GIF,PNG,SWF,TIFF,JPEG2000

(2)查看是否安装了GD扩展

输入phpinfo()来查看PHP配置信息,列表中搜索gd

①已安装

例如,输入后浏览器显示:

GD Support(是否支持) enabled(启用)
GD Version(版本)

bundled (2.1.0 compatible兼容)

以上说明安装了GD扩展

②未启动

如果未启动GD扩展,可以配置php.int来打开

步骤:打开php.int,在windows下需要将GD2的DLL文件php_gd2.dll作为扩展层包含在php.int里。修改;extension=php_gd2.dll,将前面的封号去掉即可。

          配置完成后,需要重启Apache服务器。再次执行phpinfo(),查看是否开启

 或者直接通过安装包的操作窗口,找到PHP扩展--php_gd2来快速关闭打开

【三】画图

注意:header('content-type:image/jpeg');指定当前页面为图片格式,从而进行调用

注意:有创建就有销毁

(1)添加图片资源

//imagecreate(宽,高)创建图片,返回资源
$img = imagecreate(500, 500);

(2)添加颜色

$颜色变量 = imagecolorallocate(resource $ 图片资源,int $红,int $绿,int $蓝)

 通过计算机三原色RGB,来组合调节不同颜色

$red = imagecolorallocate($img, 255, 0, 0);//红
$green = imagecolorallocate($img, 0, 255, 0);//绿
$blue = imagecolorallocate($img, 0, 0, 255);//蓝

 (3)填充

imagefilledrectangle(resource $图片资源,int $点1x轴,int $点1y轴,int $点2x轴,int $点2y轴)

(4)对角线

imageline($img, 0, 0, 500, 500, $red);

(5)画圆

imagefilledellipse($img, 250, 250, 200, 200, $blue);//画圆

(6)画矩形

imagefilledrectangle($img, 250, 250, 100, 100, $green);//画矩形

(7)保存图片

imagejpeg($img,'one.jpg');

若保存成功,则会返回布尔值

保存到同级文件下,文件名为one.jpg。

注意:文件名做修改后不会覆盖原文件,而是新生成一个图片

(8)销毁图片资源

imagedestroy($img);

(9)输出显示图片

文件保存后,直接找到文件输出即可显示预览图片

echo "<img src='./one.jpg'>";

案例:

<?php
    $img = imagecreate(500, 500);//imagecreate(宽,高)创建图片,返回资源
    $red = imagecolorallocate($img, 255, 0, 0);
    $green = imagecolorallocate($img, 0, 255, 0);
    $blue = imagecolorallocate($img, 0, 0, 255);
    imagefilledrectangle($img, 0, 0, 500, 500, $red);//填充
    imageline($img, 0, 0, 500, 500, $red);//对角线
    imageline($img, 500, 0, 0, 500, $red);//对角线
    imagefilledellipse($img, 250, 250, 200, 200, $blue);//画圆
    imagefilledrectangle($img, 250, 250, 100, 100, $green);//画矩形
    imagejpeg($img,'one.jpg');//保存资源
    imagedestroy($img);//销毁资源
    echo "<img src='./one.jpg'>";
?>

【四】验证码

验证码作用:防止机器自动注册,例如互联网早期,经常出现机器利用注册成千上万无用账号的现象。

步骤:

(1)画布;

(2)字符串;

(3)随机填充色;

(4)随机干扰元素(随机点、线、弧形均可)

(5)写入字符串;

(6)输出header头,告知浏览器按照某类型显示;

(7)输出图像;

(8)销毁图像资源

下面按照步骤详解

具体在下篇文章做了总结

【五】水印处理

<?php
    header('Content-type:image/jpeg');
    //打开目标图片
    $dst = imagecreatefromjpeg("./upload/01.jpg");
    //打开Logo来源图片
    $src = imagecreatefromjpeg('./upload/03.jpg');
    //得到目标图片的宽高
    $dst_info = getimagesize('./upload/01.jpg');
    //得到Logo图片的宽高
    $src_info = getimagesize('./upload/03.jpg');

    $dst_x = $dst_info[0] - $src_info[0];
    $dst_y = $dst_info[1] - $src_info[1];

    //将图片放在右下角
    imagecopymerge($dst, $src, $dst_x, $dst_y, 0, 0, $src_info[1], $src_info[1], 30);
    // imagecopymerge(大图, 小图, 目标开始x, 目标开始y, 来源x, 来源y, 来源宽, 来源高, 透明度)
    //输出图像
    imagejpeg($dst);
    // imagejpeg($src);
    
    //销毁资源
    imagedestroy($dst);
    imagedestroy($src);
?>
原文地址:https://www.cnblogs.com/fightjianxian/p/8596340.html