PHP图像处理

GD2

Jpgraph

创建一个画布:

<?php
    header('content-type:image/gif');
    //echo "你好";
    $im = imagecreate(200,60);
    $white = imagecolorallocate($im ,225 ,66 ,159);
    imagegif($im);
?>

显示一张图片

<?php
        function LoadPNG($imgname)
        {
            /* Attempt to open */
            $im = @imagecreatefromjpeg($imgname);
            /* See if it failed */
            if(!$im){
                echo "aaa";
                /* Create a blank image */
                $im  = imagecreatetruecolor(150,40);
                $bgc = imagecolorallocate($im, 255, 255, 255);
                $tc  = imagecolorallocate($im, 0, 0, 0);
                imagefilledrectangle($im, 0, 0, 150, 40, $bgc);
                /* Output an error message */
                imagestring($im, 1, 5, 5, 'bb ' . $imgname, $tc);
            }
            return $im;
        }

        header('Content-Type: image/jpeg');
        $img = LoadPNG('p.jpg');
        imagepng($img);
        imagedestroy($img);
?>

随机生成验证码:

<?php
    session_start();
    header('Content-Type: image/png');
    $image_width = 70;
    $image_height = 18;
    srand(microtime()*100000);
    $new_number = '';
    for($i = 0 ;$i < 4 ;$i ++){
        $new_number.=dechex(rand(0 ,15));
    }
    $_SESSION['check_checks'] = $new_number;
    $num_image = imagecreate($image_width ,$image_height);
    imagecolorallocate($num_image ,255 ,255 ,255);
    for($i = 0 ;$i < strlen($_SESSION['check_checks']) ;$i ++){
        $font = mt_rand(3 ,5);
        $x = mt_rand(1 ,8) + $image_width * $i / 4;
        $y = mt_rand(1 ,$image_height / 4);
        $color = imagecolorallocate($num_image ,mt_rand(0,100) ,mt_rand(0 ,150) ,mt_rand(0 ,200));
        imagestring($num_image ,$font ,$x ,$y,$_SESSION['check_checks'][$i] ,$color);
    }
    imagepng($num_image);
    imagedestroy($num_image);
?>

创建一个柱形图

<?php
    include ("src/jpgraph.php");
    include ("src/jpgraph_bar.php");
    $datay = array(160 ,180 ,203 ,289 ,405 ,488 ,489 ,408 ,299 ,166 ,187 ,205);
    $graph = new Graph(600 ,300 ,"auto");
    $graph -> SetScale("textlin");
    $graph -> yaxis -> scale -> SetGrace(20);
    $graph -> SetShadow();
    $graph -> img -> SetMargin(40 ,30 ,30 ,40);
    $bplot = new BarPlot($datay);
    $bplot -> SetFillColor('orange');
    $bplot -> value -> Show();
    $bplot -> value -> SetFormat('%d');
    $graph -> Add($bplot);
    $graph -> SetMarginColor("lightblue");
    $graph -> title -> Set("tit");
    $a = array(1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12);
    $graph -> xaxis -> SetTickLabels($a);
    $graph -> title -> SetFont(FF_SIMSUN);
    $graph -> xaxis -> SetFont(FF_SIMSUN);
    $graph -> Stroke();
?>

绘制折线图

<?php
    include ("src/jpgraph.php");
    include ("src/jpgraph_line.php");
    $datay = array(160 ,180 ,203 ,289 ,405 ,488 ,489 ,408 ,299 ,166 ,187 ,500);
    $graph = new Graph(600 ,300 ,"auto");
    $graph -> img -> SetMargin(50 ,40 ,30 ,40);
    $graph -> img -> SetAntiAliasing();
    $graph -> SetScale("textlin");
    $graph -> SetShadow();
    $graph -> title -> Set("tit");
    $graph -> title -> SetFont(FF_SIMSUN ,FS_BOLD);
    $graph -> SetMarginColor("lightblue");
    $graph -> yaxis ->title -> SetFont(FF_SIMSUN);
    $graph -> xaxis -> SetPos("min");
    $graph -> yaxis -> HideZeroLabel();
    $graph -> ygrid -> SetFill(true ,'#EFEFEF@0.5' ,'#BBCCFF@0.5');

    $a = array(1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12);
    $graph -> xaxis -> SetTickLabels($a);
    $graph -> xaxis -> SetFont(FF_SIMSUN);
    $graph -> yscale -> SetGrace(20);

    $p1 = new LinePlot($datay);
    $p1 -> mark -> SetType(MARK_FILLEDCIRCLE);
    $p1  -> mark ->SetFillColor('red');
    $p1 -> mark ->SetWidth(4);
    $p1 -> SetColor('blue');
    $p1 -> SetCenter();
    $graph -> Add($p1);
    $graph -> Stroke();
?>

3D饼状图

<?php
    include ("src/jpgraph.php");
    include ("src/jpgraph_pie.php");
    include ("src/jpgraph_pie3d.php");

    $data = array(160 ,180 ,203 ,289 ,405 ,500 );
    $graph = new PieGraph(540 ,260 ,"auto");
    $graph -> SetShadow();

    $graph -> title -> Set("tit");
    $graph -> title -> SetFont(FF_SIMSUN ,FS_BOLD);
    $graph -> legend -> SetFont(FF_SIMSUN ,FS_NORMAL);

    $p1 = new PiePlot3D($data);
    $p1 -> SetLegends(array('11','22','33','44','55','66'));

    $targ = array("pie3d_csimex1.php?v=1","pie3d_csimex1.php?v=2","pie3d_csimex1.php?v=3","pie3d_csimex1.php?v=4","pie3d_csimex1.php?v=5","pie3d_csimex1.php?v=6");
    $alts = array("val=%d" ,"val=%d" ,"val=%d" ,"val=%d" ,"val=%d" ,"val=%d");
    $p1 -> SetCSIMTargets($targ ,$alts);
    $p1 -> SetCenter(0.4 ,0.5);
    $graph -> Add($p1);
    $graph -> StrokeCSIM();
?>

8.PHP图像处理的更多相关文章

  1. Atitit 图像处理和计算机视觉的分类 三部分 图像处理 图像分析 计算机视觉

    Atitit 图像处理和计算机视觉的分类 三部分 图像处理 图像分析 计算机视觉 1.1. 按照当前流行的分类方法,可以分为以下三部分:三部分 图像处理 图像分析 计算机视觉1 1.2. 图像处理需要 ...

  2. Atitit 图像处理的摩西五经attilax总结

    Atitit 图像处理的摩西五经attilax总结 1. 数字图像处理(第三版)1 2. 图像处理基础(第2版)(世界著名计算机教材精选)1 3. 计算机视觉特征提取与图像处理(第三版)2 4. Op ...

  3. Atitit 图像处理的心得与疑惑 attilax总结

    Atitit 图像处理的心得与疑惑 attilax总结 1.1. 使用类库好不好??还是自己实现算法1 1.2. 但是,如果遇到类库体积太大,后者没有合适的算法,那就只能自己开发算法了1 1.3. 如 ...

  4. Atitit 图像处理 调用opencv 通过java  api   attilax总结

    Atitit 图像处理 调用opencv 通过java  api   attilax总结 1.1. Opencv java api的支持 opencv2.4.2 就有了对java api的支持1 1. ...

  5. Atitit MATLAB 图像处理 经典书籍attilax总结

    Atitit MATLAB 图像处理 经典书籍attilax总结 1.1. MATLAB数字图像处理1 1.2. <MATLAB实用教程(第二版)>((美)穆尔 著)[简介_书评_在线阅读 ...

  6. Atitit 图像处理类库大总结attilax qc20

    Atitit 图像处理类库大总结attilax qc20 1.1. 选择与组合不同的图像处理类库1 1.2. Halcon 貌似商业工具,功能强大.1 1.3. Openvc  Openvc功能也是比 ...

  7. Atitit MATLAB 图像处理attilax总结

    Atitit MATLAB 图像处理attilax总结 1.1. 下载 Matlab7.0官方下载_Matlab2012 v7.0 官方简体中文版-办公软件-系统大全.html1 1.2. Matla ...

  8. 使用MATLAB对图像处理的几种方法(下)

     试验报告 一.试验原理: 图像点处理是图像处理系列的基础,主要用于让我们熟悉Matlab图像处理的编程环境.灰度线性变换和灰度拉伸是对像素灰度值的变换操作,直方图是对像素灰度值的统计,直方图均衡是对 ...

  9. 使用MATLAB对图像处理的几种方法(上)

    实验一图像的滤波处理 一.实验目的 使用MATLAB处理图像,掌握均值滤波器和加权均值滤波器的使用,对比两种滤波器对图像处理结果及系统自带函数和自定义函数性能的比较,体会不同大小的掩模对图像细节的影响 ...

  10. 图像处理中任意核卷积(matlab中conv2函数)的快速实现。

    卷积其实是图像处理中最基本的操作,我们常见的一些算法比如:均值模糊.高斯模糊.锐化.Sobel.拉普拉斯.prewitt边缘检测等等一些和领域相关的算法,都可以通过卷积算法实现.只不过由于这些算法的卷 ...

随机推荐

  1. CSV 注入实战

    oxo1 前言 之前看到过 CSV 注入的文章,具体想了解的请搜索学习,这里不多作介绍.今天刚好碰到了导出功能,就随手测试一波,没想到还真的存在 CSV 注入漏洞. oxo2 经过 1.测试漏洞 看到 ...

  2. Mysql被黑客攻击了?一定要注意一点,不要关闭mysql服务

    因为mysql没有关闭的情况,可以从缓存里面获取到数据,如果关闭了只能从文件里面去获取数据了,会大大加大恢复难度

  3. go调用python命令行参数过量报错python.exe: The filename or extension is too long.的解决方法

    当我们在调用python时,如果传入的参数数据量过大时会报错 python.exe: The filename or extension is too long. 这时候我们的解决办法是放弃传参,将想 ...

  4. 通过 Battery Historian 工具分析 Android APP 耗电情况

    电量统计模块概述 Android 从两个层面统计电量的消耗,分别为 软件排行榜 及 硬件排行榜.它们各有自己的耗电榜单,软件排行榜为机器中每个 App 的耗电榜单,硬件排行榜则为各个硬件的耗电榜单.这 ...

  5. Android应用程序的进程创建过程

    目录 前言 步骤 step1 Ams发起请求startProcessLocked step2 Zygote收到请求 step3 handleChildProc -- 进入子进程的世界 step4 Ru ...

  6. ch2_8_1求解n阶螺旋矩阵问题

    思路:循环输出,注意边界控制 import java.util.Scanner; public class ch2_8_1求解n阶螺旋矩阵问题 { public static void main(St ...

  7. Web实验报告

  8. CobaltStrike 和 Metasploit 联动

    出品|MS08067实验室(www.ms08067.com) 本文作者:掉到鱼缸里的猫(Ms08067内网安全小组成员) 个人觉得CobaltStrike图形化的界面和丰富的功能,是一个超强的后渗透框 ...

  9. Git标签与别名

    code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...

  10. java例题_22 用递归求阶乘 5!

    1 /*22 [程序 22 递归求阶乘] 2 题目:利用递归方法求 5!. 3 程序分析:递归公式:fn!=fn*4! 4 */ 5 6 /*分析 7 * 递归:如果其中每一步都要用到前一步或前几步的 ...