PHP->利用GD库新建图像

1.确认php中GD库是否开启

  在PHP配置文件php.ini中查找extension=php_gd2.dll,去掉前边的(分号) ‘;‘ 即可,一般php是默认开启的

2.绘画步骤

  • 创建一个画布(画板)、画笔、色彩。
  • *开始绘画(重点,难点)
  • 输出图像(复制型)
  • 销毁图像资源(释放内存)

3.示例

  为了方便演示,先了解后两步

  输出图像:   

1 header("Content-Type: image/jpeg");//设置响应头信息为一个jpeg的图片
2 imagejpeg($im);//输出一个jpeg图片
3
4 header("Content-Type: image/png");//设置响应头信息为一个png的图片
5 imagepng($im);//输出一个png图片
6
7 //输出到指定文件中(另存为)
8 imagepng($im,"**.png");

  销毁图像(解除占用的资源):

1 bool imagedestroy  ( resource $image  )//销毁一图像 

  创建一个画布:

1 //创建一个基于256色的画布
2 $img=imagecreate(400,400);
3 echo $img;

  显示效果:

 

1 //新建一个真彩色图像
2 $img=imagecreatetruecolor(400,400);
3 echo $img;

  显示效果:

  其他的方式:

//还有基于某个图片的画布
imagecreatefromgif( string filename )
imagecreatefrompng( string filename )
imagecreatefromjpeg( string filename )

真彩和256色画布的显示区别-----真彩的会默认填充黑色的画布

<?php
    //创建一个基于256色的画布
    $img1=imagecreate(400,400);
    $img2=imagecreatetruecolor(400,400);
    // 输出图像
    header(‘content-type:image/png‘);
    // imagepng($img1);
    imagepng($img2);
    // 销毁图像,解除占用的资源
    // imagedestroy($img1);
    imagedestroy($img2);
?>

显示效果:

  

*开始绘画

  

<?php
    //分配定义颜色
        $red = imagecolorallocate($im,255,0,0); //分配一个颜色

        //填充背景
        bool imagefill(resource image,int x,int y, int color ); //填充背景

        //画点
        bool imagesetpixel(resource image,int x,int y,int color );//画一个像素点

        //画一个线段的函数
        bool imageline ( resource image, int x1, int y1, int x2, int y2, int color )

        //画矩形框(不填充)
        bool imagerectangle ( resource image, int x1, int y1, int x2, int y2, int color )
        //画矩形框(填充)
        bool imagefilledrectangle ( resource image, int x1, int y1, int x2, int y2, int color )

        //绘制多边形
        bool imagepolygon ( resource image, array points, int num_points, int color )
        bool imagefilledpolygon ( resource image, array points, int num_points, int color )

        //绘制椭圆(正圆)
        imageellipse ( resource image, int cx, int cy, int w, int h, int color )
        imagefilledellipse ( resource image, int cx, int cy, int w, int h, int color )

        //绘制圆弧(可填充)
        imagearc ( resource image, int cx, int cy, int w, int h, int s, int e, int color, int style )
        imagefilledarc ( resource image, int cx, int cy, int w, int h, int s, int e, int color, int style )

        //绘制字串
        bool imagestring ( resource image, int font, int x, int y, string s, int col )
        bool imagestringup ( resource image, int font, int x, int y, string s, int col )

        //绘制字符
        imagechar

        //绘制文本:
        *array imagettftext ( resource image, float size, float angle, int x, int y, int color, string fontfile, string text )

        //当上面的字体出现乱码时,使用下面的函数转换编码
        string iconv ( string in_charset, string out_charset, string str )

        $name="张三";
        $str = iconv("ISO8859-1","UTF-8",$name);
        $str = iconv("GBK","UTF-8",$name);
        $str = iconv("GB2312","UTF-8",$name);

        //图片的裁剪、合成、缩放
        **bool imagecopyresampled ( resource dst_image, resource src_image, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h )

        * imagesx — 取得图像宽度
        * imagesy — 取得图像高度
        * array getimagesize ( string $filename [, array &$imageinfo ] )  取得图像大小
?>

综合代码示例:

  

 1 <?php
 2     // 创建画布
 3     $img=imagecreatetruecolor(1000,1000);
 4     // 创建颜色
 5     $red=imagecolorallocate($img,255,0,0);
 6     $blue=imagecolorallocate($img, 0, 0, 255);
 7     $green=imagecolorallocate($img, 0, 255, 0);
 8     $gray=imagecolorallocate($img, 200, 200, 200);
 9
10     //填充颜色
11     imagefill($img,100,0,$gray);
12     //创建一个点
13     imagesetpixel($img, 20, 20, $red);
14     // 随机创建1000个点
15     for($i=0;$i<1000;$i++){
16         imagesetpixel($img, rand(0,1000), rand(0,1000), $red);
17     }
18     //输出线段
19     imageline($img, 0, 0, 200, 200, $blue);
20     //输出矩形
21     imagerectangle($img, 200, 200, 400, 400, $blue);//不填充
22     imagefilledrectangle($img, 200, 400, 400, 600, $blue);//填充
23     //绘制多边形   imagefilledpolygon----填充
24     imagepolygon($img, array(0,0,100,200,300,200), 3, $blue);
25     //绘制椭圆(正圆)
26     imageellipse($img, 600, 600, 200, 200, $blue);
27     imagefilledellipse($img, 800, 600, 200, 200, $blue);
28     // 绘制字符串
29     imagestring($img, 15, 600, 200, "string", $blue);//水平
30     imagestringup($img, 15, 600, 200, "string", $blue);//垂直
31     // 绘制字符
32     imagechar($img, 5, 800, 200, ‘H‘, $blue);
33     imagecharup($img, 5, 800, 200, ‘H‘, $blue);
34     //绘制文本
35     imagettftext($img, 20, 0, 500, 500, $blue, ‘bb.ttc‘, ‘this is string!‘);
36     /*当上面的字体出现乱码时,使用下面的函数转换编码
37     string iconv ( string in_charset, string out_charset, string str )*/
38     //imagecopyresampled($img, "dd.jpg", 200, 200, 200, 200, 200, 200, 200, 200);
39     //输出图像
40     header(‘content-type:image/png‘);
41     imagepng($img);
42     //销毁图像
43     imagedestroy($img);
44 ?>

难重点:

时间: 2024-08-28 01:33:19

PHP->利用GD库新建图像的相关文章

php学习笔记:利用gd库生成图片,并实现随机验证码

说明:一些基本的代码我都进行了注释,这里实现的验证码位数.需要用的字符串都可以再设置.有我的注释,大家应该很容易能看得懂. 基本思路: 1.用mt_rand()随机生成数字确定需要获取的字符串,对字符串进行拼接(觉得生成的验证码觉得有点太挤,大家可以再字符串中间拼接个空格键),实现随机验证码: 备注:建议大家用mt_rand(),而不是rand(),前者效率更高 2.利用gd库生成图片,把随机字符串写到图片输出. 效果: 每次刷新,都生成一个随机验证,后期我可能还会补充怎么实现随机码点击图片就再

使用PHP GD库绘制图像,不显示的问题

1. 使用PHP中的GD库绘制图像,之后浏览器无法显示,GD库安装,配置也没什么错误,提示图像因本身有错无法显示,于是就在header() 前面使用ob_clean();然后使用浏览器就能正常的浏览了 1 <?php 2 $height = 300; 3 $width = 300; 4 $im = imagecreatetruecolor($width, $height); 5 $white = imagecolorallocate ($im, 255, 255, 255); 6 $blue =

PHP利用GD库画图和生成验证码图片

首先得确定php.ini设置有没有打开GD扩展功能,测试如下 print_r(gd_info()); 如果有打印出内容如下,则说明GD功能有打开: Array ( [GD Version] => bundled (2.0.34 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [T1Lib Support] => 1 [GIF Read Support] => 1 [GIF Crea

GD库处理图像

在PHP5中,动态图象的处理要比以前容易得多.PHP5在php.ini文件中包含了GD扩展包,只需去掉GD扩展包的相应注释就可以正常使用了.PHP5包含的GD库正是升级的GD2库,其中包含支持真彩图像处理的一些有用的JPG功能. 一般生成的图形,通过PHP的文档格式存放,但可以通过HTML的图片插入方式SRC来直接获取动态图形.比如,验证码.水印.微缩图等. 一.创建图像 创建图像的一般流程: 1).设定标头,告诉浏览器你要生成的MIME类型. 2).创建一个图像区域,以后的操作都将基于此图像区

PHP利用GD库绘图和生成验证码图片

首先得确定php.ini设置有没有打开GD扩展功能,測试例如以下 print_r(gd_info()); 假设有打印出内容例如以下,则说明GD功能有打开: Array ( [GD Version] => bundled (2.0.34 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [T1Lib Support] => 1 [GIF Read Support] => 1 [GIF

PHP学习笔记:利用gd库给图片打图片水印

<?php $dst_path = '1.jpg';//目标图片 $src_path = 'logo1.png';//水印图片 //创建图片的实例 $dst = imagecreatefromstring(file_get_contents($dst_path)); $src = imagecreatefromstring(file_get_contents($src_path)); //获取水印图片的宽高 list($src_w, $src_h) = getimagesize($src_pat

PHP利用GD库处理图片方法实现

这里写的是完成每个功能的函数,可以复制单个函数直接使用,这里的每个函数都是另外一篇PHP常用类------图片处理类Image当中的方法进行细化,可以参考一下 废话不多说,直接付代码吧! 添加水印(文字和图片) <?php /** * [创建图片文字水印] * @param [string] $imagename [需要添加水印的值] * @param [string] $string [图片上添加的文字] * @param [string] $locate [水印位置,center,left_

PHP 使用GD库生成验证码 在图像上绘制汉字

PHP 并不仅限于创建 HTML 输出, 它也可以创建和处理包括 GIF, PNG, JPEG, WBMP 以及 XPM 在内的多种格式的图像. 更加方便的是,PHP 可以直接将图像数据流输出到浏览器. 要想在 PHP 中使用图像处理功能,你需要连带 GD 库一起来编译 PHP. GD 库和 PHP 可能需要其他的库, 这取决于你要处理的图像格式. 你可以使用 PHP 中的图像函数来获取下列格式图像的大小: JPEG, GIF, PNG, SWF, TIFF 和 JPEG2000.如果联合 ex

GD库的基本信息,图像的旋转、水印、缩略图、验证码,以及图像类的封装

GD库检测 <?php phpinfo(); ?> GD库安装• Windows 使用phpstudy • Linux 编译安装 –with-gd• Linux 编译安装扩展 GD库支持的图像格式 使用 gd_info() 函数 检测服务器支持的图像格式 图像信息处理 <?php //获取图像详细信息 $image = '../image/b.png'; $info = getimagesize($image); var_dump($info); $string = file_get_c