zoukankan      html  css  js  c++  java
  • (独孤九剑)--图像处理

    【一】图像处理概括

    (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);
    ?>
  • 相关阅读:
    schema文件中cube的事实表使用视图方法
    Saiku国际化总结
    saiku安装方法总结
    MySQL中的datetime与timestamp比较(转载)
    js中的刷新方法
    如何用 Node.js 和 Elasticsearch 构建搜索引擎
    Win7搭建NodeJs开发环境以及HelloWorld展示—图解
    NodeJS开发环境搭建
    从零开始nodejs系列文章
    windows 下安装nodejs及其配置环境
  • 原文地址:https://www.cnblogs.com/fightjianxian/p/8596340.html
Copyright © 2011-2022 走看看