php jpgraph如何实现右侧如何设置折线图纵坐标刻度值用百分比显示?

PHP能做很多事情,用于web开发只是冰山一角,如果你愿意或者你对PHP足够了解,你甚至可以用PHP来开发一条PS系统,是的,没错,PHP可以创建和处理包括GIF、PNG、JPEG、WBMP以及XPM在内的多种格式的图像。比PS等软件更加方便的是,PHP可以直接将图像数据流输出到浏览器。

要在PHP中使用图像处理功能,需要加载GD库,或者安装其他的第三方图形库。

一下内容引用自官方手册:

自PHP5.0开始,就自带GD库了。

获得当前安装的GD库的信息,返回一个关联数组描述了安装的 GD 库的版本和性能。
从字符串中获取图像尺寸信息
取得图像类型的文件后缀
以WBMP格式将图像输出到浏览器或文件
返回经过仿射变换后的图像,剪切区域可选
是否使用antialias(抗锯齿)功能
为一幅图像分配颜色+alpha
取得某像素的颜色索引值
取得指定的颜色最进阶的颜色索引值
取得与指定的颜色加透明度最接近的颜色
取得与给定颜色最仅仅的色度的黑白色的索引
取得指定的颜色加透明度的索引值
是一个图像中调色板版本的颜色与真彩色版本更能匹配
取得指定颜色的索引值或有可能得到的最接近的替代值
取得指定颜色 + alpha 的索引值或有可能得到的最接近的替代值
给指定调色板索引设定颜色
取得一幅图像的调色板中颜色的数目
将某个颜色定义为透明色
复制并合并图像的一部分
用灰度拷贝并合并图像的一部分
重采样复制部分图像并调整大小
复制部分图像并调整大小
新建一个基于调色板的图像
由BMP文件或 URL 创建一个新图象。
从GD2文件或URL新建一个图像
从给定的GD2文件或URL中的部分新建一个图像
从GD文件或URL新建一个图像
从gif文件或URL新建一个图像
从JPEG文件或URL新建一个图像
从PNG文件或URL新建一个图像
从字符串中的图像流新建一图像
从WBMP文件或URL新建一个图像
从XBM文件或URL新建一个图像
从XPM文件或URL新建一个图像
使用一种模式自动剪裁图像到给定矩形
区域填充到指定颜色的边界为止
将 GD 图像输出到浏览器或文件
将 GD2 图像输出到浏览器或文件
以GIF格式将图像输出到浏览器或文件
检查图像是否为真彩色图像
以JPEG格式将图像输出到浏览器或文件
设定alpha混色标志以使用绑定的libgd分层效果
将调色板从一幅图像拷贝到另一幅
将基于调色板的文件转换为真彩色
以PNGF格式将图像输出到浏览器或文件
将真彩色图像转换为调色板图像
取得使用 TrueType 字体的文本的范围
  1. 文本字符串。如果filename指定的图像不能访问或者不是一个有效的图像文件,该函数将返回FALSE并产生一条E_WARNING级别的错误。

    • filename:待测定的图像文件路径。
    • imageinfo:可选参数imageinfo允许从图像文件中提取一些扩展信息。它将以关联数组返回不同的JPG文件的APP标识。一些程序用这些APP标识来在图像中嵌入文本信息。一个非常常见的是在APP13标识中嵌入IPTC信息。可以用iptcparse()函数来将二进制的APP13标识解析为可读的信息。

    该函数还会返回额外的参数mime,符合该图像的MIME类型。此信息可以用来在HTTP Content-type头信息中发送正确的信息。对于JPG图像,还会多返回两个索引:channels和bits。对于RGB图像,channels值为3;对于CMYK图像,channels值为4。bits是每种颜色的位数。

    通过以上打印结果可知,该图像的宽度为650,高度为344,索引值为2的值为2说明图像是jpg图像,除此之外,还获得了图像的channels、bits以及mime类型。

  2. 该函数与getimagesize()函数相同。不同之处在于该函数第一个参数是图像数据的字符串表达,而不是文件名。该函数定义如下:

    • imagedata:图像数据的字符串表示。

    从输出可以看到,两个函数返回的结果是一致的,只是使用函数时图像文件的打开方式不同。

  3. 这两个函数分别获取图像的宽度和高度,先来看一下函数定义:

    这两个函数都接收一个img资源作为参数,分别返回所代表的图像的宽度和高度。

    这两个函数没什么可说,使用起来也很简单,没什么可说的。

    以上代码会分别输出300和200。

PHP中的GD库可用于创建和处理图片,一般通过以下4个步骤对图像进行操作。

使用imagecreate()函数可以创建一个基于调色板的图像。语法如下:

该函数返回一个图像资源,代表了一幅大小为x_sizey_size的空白图像。

也可以使用imagecreatetruecolor()创建画布资源。并且系统推荐使用此函数。其函数定义如下:

该函数创建一个基于真彩色的图像。也返回一个图像资源,代表了一幅大小为widthheight的黑色图像。

注意:以上函数中在图像中输出的字符串为英文,如果是中文字符串将显示乱码,要输出中文最好使用imagettftext()函数。

既然要处理图像,自然少不了和颜色打交道,在PHP中可以使用imagecolorallocate()函数来指定颜色,其函数定义如下:

该函数返回一个标识符,代表了由给定的RGB成分组成的颜色。redgreenblue分别是所需要的颜色的红、绿、蓝成分。这些参数是0到255的整数或者十六进制的0x00到0xFF。

PHP中还有一个imagecolorallocatealpha()函数,可以给图像分配颜色,同时还能指定透明度。其函数定义如下:

该函数的行为同imagecolorallocate()相同,只是多了一个额外的透明度参数alpha,其值从0到127。0表示完全不透明,127表示完全透明。

以上两个函数在颜色分配失败时都返回FALSE。

PHP的GD库提供了许多绘制图像的函数,可以像画图工具一样,绘制一些简单的形状图形。

  1. 使用imageellipse()函数可以绘制一个椭圆,其函数定义如下:

    该函数在指定坐标上画一个椭圆。成功时返回TRUE,否则返回FALSE。

    • image:由图像创建函数返回的图像资源。
  2. width:椭圆的宽度。
  3. height:椭圆的高度。
  4. color:椭圆的颜色。

    还有一个函数imagefilledellipse()也是绘制一个椭圆,区别是它会为椭圆填充指定的color颜色。

  5. 以上两个函数都是用来创建多边形的。参数points是一个PHP数组,包含了多边形的各个顶点坐标,参数num_points是顶点的总数。两个函数的区别在于一个用color作为边框颜色,一个用color作为填充颜色。

  6. 以上两个函数用col颜色在image图像资源中画一个矩形,其左上角坐标为x1, y1, 右下角坐标为x2, y2.图像的左上角坐标为0,0。

  7. 以上两个函数以cxcy(图像左上角为0,0)为中心在image所代表的图像中画一个椭圆弧。wh分别制定了椭圆的宽度和高度,起始和结束点以se参数为角度指定。0°位于三点钟位置,以顺时针方向绘制。

    PHP中还提供了多个绘制文字的函数。

    1. 该函数将字符串c的第一个字符画在image指定的图像中,其左上角位于xy(图像左上角为0,0),颜色为color。如果font是1,2,3,4,5,则使用内置字体(更大的数字对应于更大的子图。)

    2. 该函数语法格式与imagechar()相同,区别只是字符的方向不同,这里不再累述。

    3. 该函数使用FreeType2字体将文本写入图像。

      • image:由图像穿件函数返回的图像资源。
      • size:以像素点位点位的字体大小。
      • angle:角度(以度为单位),0度表示从左向右输出文本。较高的值表示逆时针旋转。例如,值为90将导致自下而上的输出文本。
      • x,y:x和y给出的坐标将定义第一个字符的基点(大致是字符的左下角)。这与imagestring()不同,后者中x和y定义第一个字符的左上角。
      • color:字体颜色。

    注意:由于GD库版本更新后,字体路径需要使用绝对路径,所以以上代码中使用realpath()来获得1.ttf的绝对路径。

    同样的,想让该函数成功的输出中文,需要指定中文字体。

  8. 该函数使用TrueType字体将指定的text写入图像,函数返回一个含有8个元素的数组,分别表示了文本外框的四个角的坐标,顺序为左下角、右下角、右上角、左上角。这些点相对于文本和角度无关,因此左上角指的是以水平方向看文字时其左上角。

    • image:由图像创建函数返回的图像资源。
    • size:字体的尺寸。根据GD的版本,为像素尺寸(GD1)或点(磅)尺寸(GD2)。
    • angle:角度,0度为从左向右的文本。角度按逆时针旋转。
    • x,y:定义了第一个字符的基本点(大概是字符的左下角)。
    • color:字体颜色。
  9. text:UTF-8编码的文本字符串。可以包含十进制数字化字符表示(形式为:€)来访问字体中超过位置 127 的字符。UTF-8 编码的字符串可以直接传递。 命名实体,比如©是不支持的。可以考虑使用 html_entity_decode() 来解码命名实体为 UTF-8 字符。如果字符串中使用的某个字符不被字体支持,将使用一个空心矩形替换该字符。(也就是所谓的乱码)$text = "这是一个把中文用黑体显示的图片。";

imagecopy()可用来复制图像,其函数定义如下:

函数imagerotate()可将图像旋转一个给定的角度。函数定义如下:

该函数返回将src_im图像用给定的angle角度旋转后的图像资源。bgd_color指定了旋转后没有覆盖到的部分的颜色。旋转的中心是图像的中心,旋转后的图像会按比例缩小以适合目标图像的大小——边缘不会被剪去。

  • image:由图像创建函数返回的图像资源。
  • angle:旋转角度,以逆时针方向旋转图像。
  • bgd_color:指定旋转后覆盖区域的颜色。
  • ignore_transparent:如果被设为非零值,则透明色会被忽略(否则会被保留)。

图像水印的原理就是把一张图片复制到另一张背景图片上。GD库的imagecopymerge()函数,可以实现图片水印,该函数定义如下:

该函数将src_im图像中坐标从src_xsrc_y开始,宽度为src_w,高度src_h的一部分拷贝到dst_im图像中坐标为dst_xdst_y的位置上。两图像将根据pct来决定合并程度,其值范围从0到100。当pct=0时,实际上什么也没做,当为100时对于调色板图像本函数和imagecopy()完全一样,它对真彩色图像实现了alpha透明。

图像验证码的原理就是生成一张图片,然后在图片上写入字符,并辅之一些干扰元素(通常为像素点和斜线)。图像验证码经常用在用户登陆、发帖等验证场景中,其目的是为了防止机器人(程序)自动操作,验证此行为来自用户。

以上代码是为了理解验证码生成的原理,下面给出一个验证码类,用面向对象的方式再实现验证码的生成,也算是复习一下面向对象的知识。

Jpgraph是一个功能强大且十分流行的PHP第三方图片处理库,其建立在内部库文件GD2基础之上。优点是建立了很多方便操作的对象和函数,能够大大简化使用GD库对图片进行处理的编码过程。

  1. 登陆 下载最新的Jpgraph压缩包。
  2. 将文件解压,(推荐放到你项目目录下)
  3. 执行时间max_execution_time=X,对于复杂的图片加载时需要较多的时间,官方推荐为30秒,可以根据图片的复杂度做相应的修改
  4. 在开发环境中注释掉缓存output_buffering,便于调试,生产环境关闭。

使用Jpgraph创建图形的一般姿势

    这里的数据可以是静态的,也可以是动态的,也可以是通过GET或POST方法传递的。
  1. 设置标题、X轴标题、Y轴标题的内容,以及字体、颜色、位置等可以是折线图、柱形图、饼状图、3D图等
  2. 解决中文乱码Gpgraph默认显示汉字时是把汉字编码认为gb2312,转化为utf-8以后再显示,如果文件的编码方式是gb2312,只需把SetFont()方法的第一个参数设置为FF_SIMSUN即可如果是utf-8编码的,需要先把汉字编码转化为gb2312,这样汉字才能正常显示转换编码方式可以使用:

该第三方库还有许多其他图形,请自行研究吧。

}

jpgraph是php中一个非常非常强大的第三方报表工具,据说能完成一切你想要的图形…

新手初识jpgraph肯定会遇到各种各样的问题,比如乱码什么的,本案例是/archives/539

}

我要回帖

更多关于 如何设置折线图纵坐标刻度值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信