php中几个简单图片判断函数

 更新时间:2016年11月25日 16:57  点击:1965

int exif_imagetype ( string $filename )
1 imagetype_gif
2 imagetype_jpeg
3 imagetype_png
4 imagetype_swf
5 imagetype_ps教程d
6 imagetype_bmp
7 imagetype_tiff_ii (intel byte order)
8 imagetype_tiff_mm (motorola byte order) 
9 imagetype_jpc
10 imagetype_jp2
11 imagetype_jpx
12 imagetype_jb2
13 imagetype_swc
14 imagetype_iff
15 imagetype_wbmp
16 imagetype_xbm

*/
$img="image.gif";          //定义文件
if(exif_imagetype($img)!=imagetype_gif)     //判断文件类型
{
  echo "指定的图片不是gif图片";       //输出结果
}
else
{
  echo "指定的图片是gif图片";
}

/*
array exif_read_data ( string $filename [, string $sections = null [, bool $arrays = false [, bool $thumbnail = false ]]] )

*/

echo "test1.jpg:<br/>n";         //输出文件名
$exif=exif_read_data('tests/test1.jpg','ifd0');     //读取文件1信息
             //根据结果判断
echo $exif===false ? "no header data found.<br/>n":"image contains headers<br/>n";
$exif=exif_read_data('tests/test2.jpg',0,true);     //读取文件2信息
echo "test2.jpg:<br/>n";         //输出文件名
foreach($exif as $key=>$section)       //循环读取信息
{
  foreach($section as $name=>$val)
  {
    echo "$key.$name:$val<br/>n";
  }
}
/*
test1.jpg:
no header data found.
test2.jpg:
file.filename: test2.jpg
file.filedatetime: 1017666176
file.filesize: 1240
file.filetype: 2
file.sectionsfound: any_tag, ifd0, thumbnail, comment
computed.html: width="1" height="1"
computed.height: 1
computed.width: 1
computed.iscolor: 1
computed.byteordermotorola: 1
computed.usercomment: exif test image.
computed.usercommentencoding: ascii
computed.copyright: photo (c) m.boerger, edited by m.boerger.
computed.copyright.photographer: photo (c) m.boerger
computed.copyright.editor: edited by m.boerger.
ifd0.copyright: photo (c) m.boerger
ifd0.usercomment: ascii
thumbnail.jpeginterchangeformat: 134
thumbnail.jpeginterchangeformatlength: 523
comment.0: comment #1.
comment.1: comment #2.
comment.2: comment #3end
thumbnail.jpeginterchangeformat: 134
thumbnail.thumbnail.height: 1
thumbnail.thumbnail.height: 1


//*/

$index="1";          //定义索引
$string=exif_tagname($index);       //获得图像索引的头信息
echo $string;          //输出结果

//

if(array_key_exists('file',$_request))
{
  $image=exif_thumbnail($_request['file'],$width,$height,$type);  //取得文件的缩略图
}
else              //如果数组不存在相应的键值
{
  $image=false;           //返回错误
}
if($image!==false)           //如果返回true
{
  header("content-type:".image_type_to_mime_type($type));   //发送头文件
  echo $image;           //输出缩略图
  exit;             //结束php教程代码
}
else              //如果返回错误
{
  echo "no thumbnail available";        //输出信息
}

*/
//创建图像
$image=imagecreatetruecolor(300,300);
//定义画饼状图所需要的颜色
$white=imagecolorallocate($image, 0xff, 0xff, 0xff);
$gray=imagecolorallocate($image, 0xc0, 0xc0, 0xc0);
$darkgray=imagecolorallocate($image, 0x90, 0x90, 0x90);
$navy=imagecolorallocate($image, 0x00, 0x00, 0x80);
$darknavy=imagecolorallocate($image, 0x00, 0x00, 0x50);
$red=imagecolorallocate($image, 0xff, 0x00, 0x00);
$darkred=imagecolorallocate($image, 0x90, 0x00, 0x00);

/*
imagecolorallocate -- 为一幅图像分配颜色   说明   int imagecolorallocate ( resource image, int red, int green, int blue)   imagecolorallocate() 返回一个标识符,代表了由给定的 rgb 成分组成的颜色。image 参数是 imagecreate() 函数的返回值。red,green 和 blue 分别是所需要的颜色的红,绿,蓝成分。这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xff。imagecolorallocate() 必须被调用以创建每一种用在 image 所代表的图像中的颜色。
*/
//画图
for($i=160;$i > 150; $i--)
{
  imagefilledarc($image, 150, $i, 200, 80, 0, 45, $darknavy, img_arc_pie);
  imagefilledarc($image, 150, $i, 200, 80, 45, 75 , $darkgray, img_arc_pie);
  imagefilledarc($image, 150, $i, 200, 80, 75, 360 , $darkred, img_arc_pie);
}
imagefilledarc($image, 150, 150, 200, 80, 0, 45, $navy, img_arc_pie);
imagefilledarc($image, 150, 150, 200, 80, 45, 75 , $gray, img_arc_pie);
imagefilledarc($image, 150, 150, 200, 80, 75, 360 , $red, img_arc_pie);
header('content-type: image/png');
imagepng($image);
imagedestroy($image);
/*
imagefilledarc()函数,可以在画出椭圆弧的同时,使用指定颜色对其进行填充。使用此函数的这种功能,就可以很简单的画出一个用于统计的饼状图。下面演示imagefilledarc()函数的使用方法

该代码的执行结果如图22.8所示:
*/

//在图片画线条

//创建真彩色图像
$img=imagecreatetruecolor(300,300);
$white=imagecolorallocate($img,255,255,255);
$red=imagecolorallocate($img,255,0,0);
$green=imagecolorallocate($img,0,255,0);
//在图像上画椭圆
imagefilledellips教程e($img,150,150,250,100,$red);
imagefilledellipse($img,150,150,100,250,$green);
//输出图像
header("content-type: image/png");
imagepng($img);
//销毁图像
imagedestroy($img);
/*
该代码的执行结果如图22.9所示:
*/

在上传图片为了推扩网站我们可能会在图片上增加水印,或对图片进行缩小,下面提供的代码就有这个功能。
 代码如下 复制代码
<?php教程
/************************************
//函数: watermark($bigimg, $smallimg, $coord = 1)
//作用: 添加水印
//参数:
$bigimg 必选。大图片--要加上水印的图片
$smallimg 必选。小图片
$coord 可选。水印在大图中的位置,
1 左上角; 2 右上角; 3 右下角; 4 左下角; 5 中间
//示例: watermark('datu.png', 'xiaotu.png', 3); //给datu.png打上水印,水印位置在右下角
*************************************/
function watermark($bigimg, $smallimg, $coord = 1){
//载入两张图片,并转成php识别的编码格式,
//等同于 imagecreate 函数,只不过这里创建的不是一个空图片。
$bi = getimagesize($bigimg);
switch($bi[2]){
case 1:
$im1 = imagecreatefromgif($bigimg);break;
case 2;
$im1 = imagecreatefromjpeg($bigimg);break;
case 3;
$im1 = imagecreatefrompng($bigimg);break;
}
$si = getimagesize($smallimg);
switch($si[2]){
case 1:
$im2 = imagecreatefromgif($smallimg);break;
case 2;
$im2 = imagecreatefromjpeg($smallimg);break;
case 3;
$im2 = imagecreatefrompng($smallimg);break;
}
// 创建水印--原理:复制小图到大图上。这里注意坐标值的计算
switch($coord){
case 1:
imagecopy ( $im1, $im2, 0, 0, 0, 0, $si[0], $si[1] ); break;
case 2:
imagecopy ( $im1, $im2, $bi[0]-$si[0], 0, 0, 0, $si[0], $si[1] ); break;
case 3:
imagecopy ( $im1, $im2, $bi[0]-$si[0], $bi[1]-$si[1], 0, 0, $si[0], $si[1] ); break;
case 4:
imagecopy ( $im1, $im2, 0, $bi[1]-$si[1], 0, 0, $si[0], $si[1] ); break;
case 5:
imagecopy ( $im1, $im2, ($bi[0]-$si[0])/2, ($bi[1]-$si[1])/2, 0, 0, $si[0], $si[1] ); break;
}
//根据后缀名生成不同格式的图片文件
switch($bi[2]){
case 1:
imagegif($im1);break;
case 2;
imagejpeg($im1);break;
case 3;
imagepng($im1);break;
}
imagedestroy($im1);
}
/************************************************
//函数: thumbnail($srcimg, $multiple)
//作用: 生成一张缩略图
//参数:
// $srcimg 必选。源图片文件名
// $multiple 可选。缩略倍数,默认为2倍,即缩小为原来的1/2
//注意: 只支持gif、jpg、png的格式图片。
//示例: thumbnail('我的图片.jpg', 5);
*************************************************/
function thumbnail($srcimg, $multiple = 2){
//载入图片并保存其信息到数组
$srcimg_arr = getimagesize($srcimg);
//计算缩略倍数
$thumb_width = $srcimg_arr[0] / $multiple;
$thumb_height = $srcimg_arr[1] / $multiple;
//判断:要建立什么格式的图片(转成php识别的编码)
switch($srcimg_arr[2]){
case 1:
$im = imagecreatefromgif($srcimg);break;
case 2;
$im = imagecreatefromjpeg($srcimg);break;
case 3;
$im = imagecreatefrompng($srcimg);break;
}

 

这里有两款验证码生成程序,第一款比较好,第二款也不错,同时第二款生成程序用一个完完的实例来说明验证码调用与生成

session_start();
class authnum {
 //图片对象、宽度、高度、验证码长度
 private $im;
 private $im_width;
 private $im_height;
 private $len;
 //随机字符串、y轴坐标值、随机颜色
 private $randnum;
 private $y;
 private $randcolor;
 //背景色的红绿蓝,默认是浅灰色
 public $red=238;
 public $green=238;
 public $blue=238;
 /**
  * 可选设置:验证码类型、干扰点、干扰线、y轴随机
  * 设为 false 表示不启用
 **/
 //默认是大小写数字混合型,1 2 3 分别表示 小写、大写、数字型
 public $ext_num_type='';
 public $ext_pixel = false; //干扰点
 public $ext_line  = false; //干扰线
 public $ext_rand_y= true;  //y轴随机
 function __construct ($len=4,$im_width='',$im_height=25) {
  // 验证码长度、图片宽度、高度是实例化类时必需的数据
  $this->len      = $len; $im_width = $len * 15;
  $this->im_width = $im_width;
  $this->im_height= $im_height;
  $this->im = imagecreate($im_width,$im_height);
 }
 // 设置图片背景颜色,默认是浅灰色背景
 function set_bgcolor () {
  imagecolorallocate($this->im,$this->red,$this->green,$this->blue);
 }
 // 获得任意位数的随机码
 function get_randnum () {
  $an1 = 'abcdefghijklmnopqrstuvwxyz';
  $an2 = 'abcdefghijklmnopqrstuvwxyz';
  $an3 = '0123456789';
  if ($this->ext_num_type == '')  $str = $an1.$an2.$an3;
  if ($this->ext_num_type == 1) $str = $an1;
  if ($this->ext_num_type == 2) $str = $an2;
  if ($this->ext_num_type == 3) $str = $an3;
  for ($i = 0; $i < $this->len; $i++) {
   $start = rand(1,strlen($str) - 1);
   $randnum .= substr($str,$start,1);
  }
  $this->randnum = $randnum;
  $_session[an] = $this->randnum;
 }
 // 获得验证码图片y轴
 function get_y () {
  if ($this->ext_rand_y) $this->y = rand(5, $this->im_height/5);
  else $this->y = $this->im_height / 4 ;
 }
 // 获得随机色
 function get_randcolor () {
  $this->randcolor = imagecolorallocate($this->im,rand(0,100),rand(0,150),rand(0,200));
 }
 // 添加干扰点
 function set_ext_pixel () {
  if ($this->ext_pixel) {
   for($i = 0; $i < 100; $i++){
       $this->get_randcolor();
       imagesetpixel($this->im, rand()%100, rand()%100, $this->randcolor);
   }
  }
 }
 // 添加干扰线
 function set_ext_line () {
  if ($this->ext_line) {
   for($j = 0; $j < 2; $j++){
    $rand_x = rand(2, $this->im_width);
    $rand_y = rand(2, $this->im_height);
    $rand_x2 = rand(2, $this->im_width);
    $rand_y2 = rand(2, $this->im_height);
    $this->get_randcolor();
    imageline($this->im, $rand_x, $rand_y, $rand_x2, $rand_y2, $this->randcolor);
   }
  }
 }
 /**创建验证码图像:
  * 建立画布(__construct函数)
  * 设置画布背景($this->set_bgcolor();)
  * 获取随机字符串($this->get_randnum ();)
  * 文字写到图片上(imagestring函数)
  * 添加干扰点/线($this->set_ext_line(); $this->set_ext_pixel();)
  * 输出图片
 **/
 function create () {
  $this->set_bgcolor();
  $this->get_randnum ();
  for($i = 0; $i < $this->len; $i++){
   $font = rand(4,6);
      $x    = $i/$this->len * $this->im_width + rand(1, $this->len);
   $this->get_y();
   $this->get_randcolor();
      imagestring($this->im, $font, $x, $this->y, substr($this->randnum, $i ,1), $this->randcolor);
  }
      $this->set_ext_line();
      $this->set_ext_pixel();
   header("content-type:image/png");
   imagepng($this->im);
   imagedestroy($this->im);     //释放图像资源
 }

}//end class
/**使用验证码类的方法:
 * $an = new authnum(验证码长度,图片宽度,图片高度);
 * 实例化时不带参数则默认是四位的60*25尺寸的常规验证码图片
 * 表单页面检测验证码的方法,对比 $_session[an] 是否等于 $_post[验证码文本框id]
 * 可选配置:
 *  1.验证码类型:$an->ext_num_type=1;  值为1是小写类型,2是大写类型,3是数字类型
 *  2.干扰点:$an->ext_pixel = false;   值为false表示不添加干扰点
 *  3.干扰线:$an->ext_line = false;    值为false表示不添加干扰线
 *  4.y轴随机:$an->ext_rand_y = false; 值为false表示不支持图片y轴随机
 *  5.图片背景:改变 $red $green $blue 三个成员变量的值即可
**/
$an = new authnum();
$an->ext_num_type='';
$an->ext_pixel = true; //干扰点
$an->ext_line  = false; //干扰线
$an->ext_rand_y= true; //y轴随机
$an->green = 238;
$an->create();
?>

好下面来看一款验证码调用实例

例子demo:

以下为引用的内容:
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312" />
<title>hi.baidu.com/ji_haiyang</title>
</head>

<body>
<form action ="demo1.php教程" method="post" name="form1">
<input name ="test" type="text" value="1234" />
<div onclick='this.innerhtml="<img src=vcode.php?r="+math.random()+"></img>"'>
<img src="vcode.php"></img>
</div>
<input name ="test2" type="text" value="1" />
<input name ="submit" type="submit" value="submit" />
</form>

</body>
</html>


 


例子demo1:

<?php

session_start();
$test = $_post['test'];
$test = trim($test);
$submit = $_post['submit'];
if($test==$_session['vcode']){
echo 'true,输入验证码正确';
} else {
echo 'false,输入验证码错误';
}

?>
 

调用文件vcode.php: 以下为引用的内容:
<?php
/**
* 默认验证码session为vcode.即:$_session['vcode'];
* 注意在给变量符值时不要把变量的名子和session冲突
* 注:在验证时不分大小写
*/
include("inc_vcode_class.php");
$v = new vcode;
//$config['width'] = 50;   //验证码宽
//$config['height'] = 20;   //验证码高
//$config['vcode'] = "vcode"; //检查验证码时用的session
//$config['type'] = "default"; //验证码展示的类型default:大写字母,string:小写字母,int:数字 php程序员站
//$config['length'] = 4;   //验证码长度
//$config['interfere']= 10;   //干扰线强度,范围为1-30,0或空为不起用干扰线
//$v->init($config); //配置
$v->create();
?>

验证码类inc_vcode_class.php: www~phperz~com 以下为引用的内容:
<?php
/**
* 验证码类
* 注:需要gd库支持
*/
session_start();
class vcode{
private $config;
private $im;
private $str;

function __construct(){
$this->config['width'] = 50;
$this->config['height'] = 20;
$this->config['vcode'] = "vcode";
$this->config['type'] = "default";
$this->config['length'] = 4;
$this->config['interfere'] = 10;

$this->str['default'] = "abcdefghijklmnopqrstuvwxyz";
$this->str['string'] = "abcdefghijklmnopqrstuvwxyz";
$this->str['int']  = "0123456789";
}

//配置
public function init($config=array()){
if (!empty($config) && is_array($config)){
foreach($config as $key=>$value){
$this->config[$key] = $value;
}
}
}

//输出验证码
public function create(){
if (!function_exists("imagecreate")){
return false;
}
$this->create_do();
}

//创建
private function create_do(){
$this->im = imagecreate($this->config['width'],$this->config['height']); php程序员之家
//设置背景为白色
imagecolorallocate($this->im, 255, 255, 255);

//为此背景加个边框
$bordercolor= imagecolorallocate($this->im,37,37,37);
imagerectangle($this->im,0,0,$this->config['width']-1,$this->config['height']-1,$bordercolor);

//生成验证码
$this->create_str();
$vcode = $_session[$this->config['vcode']];

//输入文字
$fontcolor = imagecolorallocate($this->im,46,46,46);
for($i=0;$i<$this->config['length'];$i++){
imagestring($this->im,5,$i*10+6,rand(2,5),$vcode[$i],$fontcolor);
}

//加入干扰线
$interfere = $this->config['interfere'];
$interfere = $interfere>30?"30":$interfere; php程序员站
if (!empty($interfere) && $interfere>1){
for($i=1;$i<$interfere;$i++){
$linecolor = imagecolorallocate($this->im,rand(0,255),rand(0,255),rand(0,255));
$x = rand(1,$this->config['width']);
$y = rand(1,$this->config['height']);
$x2 = rand($x-10,$x+10);
$y2 = rand($y-10,$y+10);
imageline($this->im,$x,$y,$x2,$y2,$linecolor);
}
}

header("pragma:no-cachern");
header("cache-control:no-cachern");
header("expires:0rn");
header("content-type:image/jpegrn");
imagejpeg($this->im);
imagedestroy($this->im);
exit;
}

//得到验证码
private function create_str(){
if ($this->config['type']=="int"){
for($i=1;$i<=$this->config['length'];$i++){
$vcode .= rand(0,9);
}
$_session[$this->config['vcode']] = $vcode;
return true;
}
$len = strlen($this->str[$this->config['type']]);
if (!$len){
$this->config['type'] = "default";
$this->create_str();
}
for($i=1;$i<=$this->config['length'];$i++){
$offset  = rand(0,$len-1);
$vcode .= substr($this->str[$this->config['type']],$offset,1);
}
$_session[$this->config['vcode']] = $vcode;
return true;
}
}

此程序实现php画柱状图它的设计思想是:首先以用imagecreate()来生成一个空白图形;其程序实现如下: //需要两种不同的颜色,正数一个 负数一个 ,一个数据数组,$path为保存图片的地址

<?php教程
//此程序实现php画柱状图,开发股票网站的朋友经常会碰到在生成k线图片,现在我们来看看一款利用php根据数组数据生成k线图片。
//它的设计思想是:首先以用imagecreate()来生成一个空白图形;其程序实现如下:
//需要两种不同的颜色,正数一个 负数一个 ,一个数据数组,$path为保存图片的地址

$data = array ("-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24","-1174.58","-1865.41","1961.24");
$colors = array (array (255,0,0 ),array (0,255,0 ) );
$path = "gg15_600050.gif";
$title = "中国联通(600050)30日资金进出";
$date = array ("2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00","2010-05-20 00:00:00");
$hai = array(7203,6037,1931,9605,7405,8855,228,7771,8671,8791,1290,426,3265,4298,4809,3350,8204,8682,5523,7569,5853,593,3124,9062,3329,3236,2252,8756,2796,5164,2599,2630,1470,9779,8805,1512,1517,5635,760,1380,152,6035,2905,3163,9443,9432,5031,2838,6802,9330,1878,1333,4297,4180,3037,4527,9043,7287,3248,3448,3405,7204,2203,3974,4399,7333,4541,7033,4292,6128,9955,8603,297,6992,3282,9612,4483,8379,4016,6038,4163,3789,6896,8710,1502,1579,1712,3705,3619,5150,3007,1853,2776,3056,569,9031,6092,8600,8941,6366,5829,433,8011,9637,9106,1761,2422,9873,8186,1136,1763,3050,285,1962,775,9900,7371,2691,9051,6596,6858,6726,1527,3970,910,2621,7598,7899,6546,3678,2202,9411,6129,8352,4830,4484,6776,243,323,3946,751,7508,8173,3776,5071,3847,3318,4901,2102,7516,5251,3299,8859,2114,8711,9800,7707,5898,3489,580,5763,2470,4126,6269,5191,182,412,3043,3208,2438,6889,1732,1979,7692,3445,8214,8620,9446,4624,3615,5496,6152,213,3715,9623,1215,4757,9443,3366,2988,8043,6874,3742,4974,4812,6839,3016,5625,4656,5315,8303,8346,2315,3230,1969,1688,7381,6463,1030,8856,4691,6042,7652,8502,3839,7844,9149,4029,9465,2897,7688,3791,1458,6981,484,1290,4261,1222,9503,4881,7663,1399,2260,8066,6405,8442,722,9297,177,8426,2103,2078,3521,2280,8570,4663,6227,5784,7438,654,3036,9965,872,8306,3537,899,5888,1319,2472,9218,4853,7849,9433,1196,4880,1597,9258,7465,8138,817,1637,4201,1939,8914,1114,2232,8251,4538,7378,7438,4489,993,5269,944,2718,6633,4378,8431,155,5061,9347,1125,8865,4629,9965,4706,6263,8742,971,301);
draw(600,300,$data,$colors,$path,$title,$date);
function draw($w,$h,$data,$colors,$path,$title,$date)
{
 //创建新空白图形
 //箭头50像素,内容400*300
 $width = $w;
 $height = $h;
 //取得左下角的坐标点,左边50像素和最下边50像素用于写标尺
 $l_b_x = 50;
 $l_b_y = $height/2;
 
 $chartfont = 2; //图表字体
 $font = 'c:/windows/fonts/simsun.ttc';//支持汉字的字体
 $chartfontheight = imagefontheight($chartfont);//图表字体的大小
 
 //取得最大的数据
 $max = abs(max($data));
 $max = $max>abs(min($data))?$max:abs(min($data));
 $image = imagecreate($width,$height);
 
 //填充背景为白色
 $color_white = imagecolorallocate($image, 0xff, 0xff, 0xff);//白色
 $color_diwen = imagecolorallocate($image,0xd8,0xd8,0xd8);//暗灰色
 imagefill($image,0,0,$color_white);
 //写入logo
 imagettftext($image,20,0,$l_b_x+20,45,$color_diwen,$font,'华南财经网');
 //画坐标
 //坐标颜色为黑色,先画坐标,再画箭头
 $black_color = imagecolorallocate($image,0x00,0x00,0x00);
 imageline($image,$l_b_x,$l_b_y,$l_b_x,10,$black_color);
 imageline($image,$l_b_x,$l_b_y,$width-10,$l_b_y,$black_color);
 //箭头
 imageline($image,$l_b_x,10,$l_b_x-3,14,$black_color);
 imageline($image,$l_b_x,10,$l_b_x+3,14,$black_color);
 imageline($image,$width-10,$l_b_y,$width-13,$l_b_y-3,$black_color);
 imageline($image,$width-10,$l_b_y,$width-13,$l_b_y+3,$black_color);
 //画底纹,灰色;画20条底纹;虚线
 $pit = floor(($l_b_y-50)/10);//每一段的高度
 $pit_x = floor(($width-$l_b_x-30)/count($data));//每一段的宽度
 //计算单位
 $x_max = $max;
 $flag_danwei = 0;
 while($x_max> 1000 )
 {
  $x_max /= 100;
  $flag_danwei++;
 }
 switch($flag_danwei)
 {
 // case 0:$danwei = '(元)';break;
  case 0:$danwei = '(万)';break;
  case 1:$danwei = '(百万)';break;
  case 2:$danwei = '(亿)';break;
  case 3:$danwei = '(百亿)';break;
 }
 for($i=1;$i<11;$i++)
 {
  imageline($image,$l_b_x+1,$l_b_y-$i*$pit,$width-15,$l_b_y-$i*$pit,$color_diwen);
  //从坐标的值
  $v_v = number_format(($max/(10*pow(100,$flag_danwei))*$i),2);
  $v_v = substr($v_v,0,5);
  imagestring($image,
     $chartfont,
     $l_b_x-40,
     $l_b_y-$i*$pit-10,
     $v_v,
     $black_color);
 }
 //原点坐标
 imagestring($image,
    $chartfont,
    $l_b_x-20,
    $l_b_y-10,
    0,
    $black_color);
 //写入汉字,单位 和标题
 imagettftext($image, 10,0,$l_b_x-45,20,$black_color,$font,$danwei);
 //imagettftext($image, 11,0,$width/2-70,$l_b_y+20,$black_color, $font,$title);

 //画柱体,长方形,并着色
 $color_big = imagecolorallocate($image,$colors[0][0],$colors[0][1],$colors[0][2]);
 $color_small = imagecolorallocate($image,$colors[1][0],$colors[1][1],$colors[1][2]);
 for($j=0;$j<count($data);$j++)
 {
  $d_h = floor(abs($data[$j]/$max*10*$pit));//柱体高度
  $current_date = substr($date[$j],5,5);
 // $current_date .= substr($date[$j],8,2);
  imagerectangle($image,
     $l_b_x+$j*$pit_x+1,
     $l_b_y,
     $l_b_x+($j+1)*$pit_x-2,
     $l_b_y-$d_h,
     $black_color);
  //为矩形着色
  $current_color = $data[$j]>0?$color_big:$color_small;
  imagefilltoborder($image,
    $l_b_x+$j*$pit_x+1 + floor($pit_x/2),
    $l_b_y-floor($d_h/2),
    $black_color,
    $current_color);
  //写入日期
  /*imagestring($image,
    $chartfont,
    $l_b_x+$j*$pit_x,
    $l_b_y+2,
    $current_date,
    $black_color);*/
  imagettftext($image,8,90,$l_b_x+$j*$pit_x+10,$l_b_y-$d_h,$black_color,$font,$current_date);
 } 
 if($path !="")
  imagegif($image,$path);
 else imagegif($image);
 imagedestroy($image);
 }//画图函数结束
//输出生成的图片
/*

header("content-type: image/gif");
$my_colors[] = array(0xff,0x00,0x00);
$my_colors[] = array(0x00,0xff,0x00);
draw(600,400,array(1066565650,-40345340,50343433440,1834340,50343230,-8023454230,600,7232323300,-836),$my_colors,0,'教科书大阿斯顿即可');*/
//draw(600,400,array(1066,-4040,5040,1840,5030,-8230,600,7232,-836),$my_colors,0,'教科书大阿斯顿即可');
?>

本站原创教程,转载注明来源于http://www.111cn.net/phper/php.html 否则必究

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • 使用PHP+JavaScript将HTML页面转换为图片的实例分享

    这篇文章主要介绍了使用PHP+JavaScript将HTML元素转换为图片的实例分享,文后结果的截图只能体现出替换的字体,也不能说将静态页面转为图片可以加快加载,只是这种做法比较interesting XD需要的朋友可以参考下...2016-04-19
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • JavaScript判断浏览器及其版本信息

    本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Photoshop古装美女图片转为工笔画效果制作教程

    今天小编在这里就来给各位Photoshop的这一款软件的使用者们来说说把古装美女图片转为细腻的工笔画效果的制作教程,各位想知道方法的使用者们,那么下面就快来跟着小编一...2016-09-14
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • 利用JS实现点击按钮后图片自动切换的简单方法

    下面小编就为大家带来一篇利用JS实现点击按钮后图片自动切换的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
  • jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮

    jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮...2013-10-13
  • js实现上传图片及时预览

    这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09
  • 一个奇葩的最短的 IE 版本判断JS脚本

    使用 conditional comment 来判断 IE 的版本。嗯,是早早有人提出,但没有认真看代码。昨天刚好在看 CSS3 PIE 的时候看到,觉得是不是不靠谱。今天看到 Paul Irish 也提起,那么,推荐一下吧。这是作者博客上写的:复制代码 代码...2014-05-31
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • Photoshop枪战电影海报图片制作教程

    Photoshop的这一款软件小编相信很多的人都已经是使用过了吧,那么今天小编在这里就给大家带来了用Photoshop软件制作枪战电影海报的教程,想知道制作步骤的玩家们,那么下面...2016-09-14
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20