Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP绘图技术实例讲解

PHP绘图技术实例讲解

小云云
小云云asal
2018-03-02 09:03:323253semak imbas

学习矢量图片(验证码),报表的绘制,生成。希望本文能帮助到大家。

步骤

创建画布
会只需要的各种图形(圆,直线,矩形,弧线,扇形)
输出图像到网页,也可以另存
销毁图片(释放内存)

图片格式

gif 图片压缩率高,
但是只能显示256色可能造成颜色丢失,但可以显示动画

jpg/jpeg 图片的压缩率高,可以用较小的文件来显示
网页上用的比较多

png,高仿真
综合了gif和jpg的优势,但是不能显示动画

快速入门

创建画布$img = imagecreatetruecolor(100,100);

取色$red = imagecolorallocate($img, 255, 0, 0);

画图
•imagefilledarc — 画一椭圆弧且填充
•imagefilledellipse — 画一椭圆并填充
•imagefilledpolygon — 画一多边形并填充
•imagefilledrectangle — 画一矩形并填充

输出到浏览器header("content-type: image/png");
imagepng($img);

销毁
imagedestroy($img);

图片到画布

$srcImage = imagecreatefromgif(filename);$srcImage_info = getimagesize(filename);
imagecopy(dst_im, src_im, dst_x, dst_y, 
    src_x, src_y, src_w, src_h);
具体参数含义 不懂看文档

写字

imagettftext(image, size, angle, x, y, 
    color, fontfile, text)

生成验证码

<?php    /**
    * Created by PhpStorm.
    * User: draymonder
    * Date: 2018/3/1
    * Time: 15:15
    */
    $checkcode ="";    for($i=0;$i<4;$i++){        $checkcode.= dechex(rand(0,15));
    }    $img = imagecreatetruecolor(200,30);    //背景颜色
    $bgcolor = imagecolorallocate($img,0,0,0);
    imagefill($img,0,0,$bgcolor);    //添加干扰线
    for($i=0;$i<10;$i++){        $color = imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
        imageline($img,rand(0,200),rand(0,30),rand(0,200),rand(0,30),$color);
    }    //白色,字体颜色
    $white = imagecolorallocate($img,255,255,255);    //添加字符串
    imagestring($img,rand(4,6),rand(0,180),rand(0,20),$checkcode,$white);
    header("content-type: image/png");
    imagepng($img);
    imagedestroy($img);
?>

相关推荐:

php绘图技术的例子

php中的绘图技术要点及应用总结

php绘图技术常用函数整理

Atas ialah kandungan terperinci PHP绘图技术实例讲解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn