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. RichTextBox FlowDocument类型操作

      最近研究微信项目,套着web版微信协议做了一个客户端,整体WPF项目MVVM架构及基本代码参考于:http://www.cnblogs.com/ZXdeveloper/archive/2016/1 ...

  2. 《Asp.Net Core3 + Vue3入坑教程》 - Vue 1.使用vue-cli创建vue项目

    简介 <Asp.Net Core3 + Vue3入坑教程> 此教程适合新手入门或者前后端分离尝试者.可以根据图文一步一步进操作编码也可以选择直接查看源码.每一篇文章都有对应的源码 目录 & ...

  3. 进阶Java多线程

    一.多线程创建方式 1.1.继承Thread类创建线程类 1.实现步骤 定义一个继承Thread类的子类,并重写该类的run()方法: 创建Thread子类的实例,即创建了线程对象: 调用该线程对象的 ...

  4. 我与FreeBSD的故事之三

    联想G400 是我在国美电器线下买的笔记本.我什么也不懂,就随便买了,不随便也不行,谁都知道只要不是那种特别的奸商,基本上货物都是符合价值决定价格这个基本的经济学规律的.所以没钱就失去了选择的自由.到 ...

  5. WorkSkill整理之 java用Scanner 类输入数组并打印

    输入不确定长度的数组 import java.util.*; public static void main(String[] args){ System.out.println("请输入一 ...

  6. 2019 GDUT Rating Contest III : Problem D. Lemonade Line

    题面: D. Lemonade Line Input file: standard input Output file: standard output Time limit: 1 second Memo ...

  7. 利用flex解决input定位的问题

    用简单的布局搞定input框使用fixed下输入的问题 最近在做移动端H5聊天应用发现,当input框在最底部并且使用 position:fixed 属性的时候在苹果手机中会出现不兼容的情况 ​

  8. polay计数原理

    公式: Burnside引理: 1/|G|*(C(π1)+C(π2)+C(π3)+.....+C(πn)): C(π):指不同置换下的等价类数.例如π=(123)(3)(45)(6)(7),X={1, ...

  9. Java入门环境的搭建

    入门环境搭建 Java帝国的诞生 C & C++ 1972年C诞生 贴近硬件,运行极快,效率极高 操作系统,编译器,数据库,网络系统等 指针和内存管理 1982年C++诞生 面向对象 兼容C ...

  10. JS复制文本到粘贴板,前端H5移动端点击按钮复制文本

    <span id="codeNum">FTYHDSDW</span> <span class=" code-btn" id=&qu ...