PHP GD函数库处理图像
author:一佰互联 2019-03-26   click:166

简介:1. 创建与绘制图像例:create_img.php?phpheader("Content-type:image/gif");//向客户端发送原始的 HTTP 报头。Content-type:image/gif$image = imagecreate(100,100);//创建100*100像素的画布资源$blue = image ...

PHP GD函数库处理图像


1. 创建与绘制图像

例:create_img.php

<?php

header("Content-type:image/gif");//向客户端发送原始的 HTTP 报头。Content-type:image/gif

$image = imagecreate(100,100);//创建100*100像素的画布资源

$blue = imagecolorallocate($image,0,0,255);//为$image画布设置图像颜色 蓝色

imagefill($image,0,0,$blue);//在 image 图像的坐标 x,y(图像左上角为 0, 0)处用 color 颜色执行区域填充

imagegif($image);//输出图象到浏览器或文件。

imagedestroy($image);//销毁一图像

?>

结果:

PHP GD函数库处理图像


补充

1)header

定义和用法

header() 函数向客户端发送原始的 HTTP 报头。

认识到一点很重要,即必须在任何实际的输出被发送之前调用 header() 函数(在 PHP 4 以及更高的版本中,您可以使用输出缓存来解决此问题):

语法

header(string,replace,http_response_code)

参数描述

string必需。规定要发送的报头字符串。

replace

可选。指示该报头是否替换之前的报头,或添加第二个报头。

默认是 true(替换)。false(允许相同类型的多个报头)。

http_response_code可选。把 HTTP 响应代码强制为指定的值。(PHP 4 以及更高版本可用)

2)imagecreate

如果我们要对图像进行处理,就如其它图像处理软件一样,需要创建一块画布。imagecreate() 和 imagecreatetruecolor() 函数用于创建一幅空白图像。

语法:

  resource imagecreate( int x, int y )

参数 x ,y 分别为要创建图像的宽度和高度像素值,返回一个图像资源。

3)imagecolorallocate

设置图像的颜色,需要调用imagecolorallocate()函数完成。如果在图像中需要设置多种颜色,只要多次调用该函数即可。该函数的原型如下所示:

复制代码 代码如下:

int imagecolorallocate(resource $image,int $red,int $green,int $blue) //为一幅图分配颜色

该函数会返回一个标识符,代表了由给定的RGB成分组成的颜色。参数$red、$green和$blue分别是所需要的颜色的红、绿蓝成分。这些参数是0到255的整数或者十六进制的0×00到0xFF。第1个参数$image是画布图像的句柄,该函数必须调用$image所代表的图像中的颜色。但要注意,如果是使用imagecreate()函数建立的画布,则第一次对imagecolorallocate()函数的调用,会给基于调色板的图像填充背景色。

4)imagefill

imagefill — 区域填充

说明

imagefill ( resource $image , int $x , int $y , int $color ) : bool

imagefill() 在 image 图像的坐标 x,y(图像左上角为 0, 0)处用 color 颜色执行区域填充(即与 x, y 点颜色相同且相邻的点都会被填充)。

5)imagegif

imagegif — 输出图象到浏览器或文件。

说明

imagegif ( resource $image [, string $filename ] ) : bool

imagegif() 从 image 图像以 filename 为文件名创建一个 GIF 图像。image 参数是 imagecreate() 或 imagecreatefrom* 函数的返回值。

图像格式为 GIF87a。如果用了 imagecolortransparent() 使图像为透明,则其格式为 GIF89a。

6)imagedestroy

imagedestroy — 销毁一图像

说明

bool imagedestroy ( resource $image )

imagedestroy() 释放与 image 关联的内存。image 是由图像创建函数返回的图像标识符,例如 imagecreatetruecolor() 。

例:绘制圆弧

arc.php

<?php

header("Content-type:image/jpg");//向客户端发送原始的 HTTP 报头。Content-type:image/jpg

$im = imagecreate(200,200);//创建200*200像素的画布资源

$white = imagecolorallocate($im,255,255,255);//为$image画布设置图像颜色 白色

$blue = imagecolorallocate($im,0,0,255);//为$image画布设置图像颜色 蓝色

imagearc($im,100,100,150,150,0,360,$blue);//用于画椭圆弧

imagejpeg($im);//以 JPEG 格式将图像输出到浏览器或文件

imagedestroy($im);//销毁一图像

?>

结果:

PHP GD函数库处理图像


补充

1)imagearc

imagearc — 用于画椭圆弧。

语法

bool imagearc ( resource $image , int $cx , int $cy , int $w , int $h , int $s , int $e , int $color )

imagearc() 以 cx,cy(图像左上角为 0, 0)为中心在 image 所代表的图像中画一个椭圆弧。

w 和 h 分别指定了椭圆的宽度和高度,起始和结束点以 s 和 e 参数以角度指定。0°位于三点钟位置,以顺时针方向绘画。

2)imagejpeg

imagejpeg -- 以 JPEG 格式将图像输出到浏览器或文件

说明

bool imagejpeg ( resource image [, string filename [, int quality]] )

imagejpeg() 从 image 图像以 filename 为文件名创建一个 JPEG 图像。image 参数是 imagecreatetruecolor() 函数的返回值。

filename 参数为可选,如果省略,则原始图像流将被直接输出。要省略 filename 参数而提供 quality 参数,使用空字符串("")。通过 header() 发送 Content-type: image/jpeg 可以使 PHP 脚本直接输出 JPEG 图像。

2.获取图像信息

1)exif_imagetype — 判断一个图像的类型

说明

int exif_imagetype ( string $filename )

exif_imagetype() 读取一个图像的第一个字节并检查其签名。

本函数可用来避免调用其它 exif 函数用到了不支持的文件类型上或和 $_SERVER["HTTP_ACCEPT"] 结合使用来检查浏览器是否可以显示某个指定的图像。

参数

filename

被检查的图像文件名。

返回值

如果发现了恰当的签名则返回一个对应的常量(常量值可以为IMAGETYPE_GIF、IMAGETYPE_JPEG、IMAGETYPE_PNG),否则返回 FALSE 。返回值和 getimagesize() 返回的数组中的索引 2 的值是一样的,但本函数快得多。

例:exif_imagetype.php

<?php

$filename = "winter.jpg";//图像文件名称

if (exif_imagetype($filename) == IMAGETYPE_GIF) //如果发现了恰当的签名则返回一个对应的常量与之相当则打印对应内容

{

echo "$filename 格式:GIF";

}

else if (exif_imagetype($filename) == IMAGETYPE_JPEG)

{

echo "$filename 格式:JPEG";

}

else if (exif_imagetype($filename) == IMAGETYPE_PNG)

{

echo "$filename 格式:PNG";

}

else

{

echo "其他格式";

}

?>

结果:

PHP GD函数库处理图像


2)getimagesize

getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。

语法格式:

array getimagesize ( string $filename [, array &$imageinfo ] )

getimagesize() 函数将测定任何 GIF(1),JPG(2),PNG(3),SWF(4),SWC(5),PSD(6),TIFF(7),BMP(8),IFF(9),JP2(10),JPX(11),JB2(12),JPC(13),XBM(14) 或 WBMP(15) 图像文件的大小并返回图像的尺寸以及文件类型及图片高度与宽度。

例:getimagesize.php

<?php

var_dump(getimagesize("./winter.jpg"));//打印获取图片信息

list($width, $height, $type, $attr) = getimagesize("./winter.jpg");//获取图片信息赋值给数组

echo "宽度:$width <br>";//打印图像宽度

echo "长度:$height <br>";//打印图像长度

echo "类型: $type <br>";//打印图像类型 数字编号对象图片格式

echo "$attr";//打印图片属性

?>

结果:

PHP GD函数库处理图像


3)例:img_info.php

<?php

function getImageInfo($img) //创建一个函数获取图像信息的函数 形参为$img图像名称

{

$img_info = getimagesize($img); //获取图像信息存储给$img_info数组

var_dump($img_info);//打印获取图像信息

switch($img_info[2]) { //判断类型

case 1:

$imgtype = "GIF";

break;

case 2:

$imgtype = "JPG";

break;

case 3:

$imgtype = "PNG";

break;

}

$type = "格式:".$imgtype."字节"; //文件类型

$size = "大小: ".filesize($img); //文件大小

echo " 宽度 ";

echo $img_info[0]."<br>"; //打印宽度

echo " 高度 ";

echo $img_info[1]."<br>"; //打印高度

echo $type."<br>"; //打印文件类型

echo $size."<br>"; //打印文件大小

return $img_info; //函数返回数组值

}

$img="Winter.jpg";

getImageInfo($img);

?>

结果:

PHP GD函数库处理图像


注:

filesize() 函数返回指定文件的大小。

若成功,则返回文件大小的字节数。若失败,则返回 false 并生成一条 E_WARNING 级的错误。

语法

filesize(filename)

参数描述

filename必需。规定要检查的文件。

提示和注释

提示:本函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。

3.缩放图像

例:img.php

<?php

function resizeimage($img, $width, $height)//创建一个函数 形参为$img为文件名, $width为宽度, $height为高度

{

$type = substr(strrchr($img,"."),1);//获取图片的类型

//函数strrchr返回最后一次出现"."的位置开始到字符串末尾的子字符串。函数substr返回从序号为1的字符串开始到字符串末尾的子字符串,即图片的后缀名

switch($type)

{

case "jpg":

$im = imagecreatefromjpeg($img);//创建 JPEG 格式图片

break;

case "gif":

$im = imagecreatefromgif($img);//创建 GIF 格式图片

break;

case "png":

$im = imagecreatefrompng($img);//创建 PNG 格式图片

break;

}

//目标图象名称

$length = strlen($img);//返回文件名长度

$name = substr($img,0,$length);//返回从文件名字符串第一个开始到字符末尾的子字符串

$newname = "new".$name;//重建字符串拼接 即为新的图片名称

$wid = imagesx($im);//获取图像的宽度

$hei = imagesy($im); // 获取图像的高度

$newratio = ($width)/($height);//新的比例

$ratio = ($wid)/($hei);//原有比例

$newimg = imagecreatetruecolor($width,$height);//生成图象

if($ratio>=$newratio)//目标图像变高了,保持高度不变,根据比例改变新图像的宽度。

{

imagecopyresampled($newimg, $im, 0, 0, 0, 0, $width,$height, (($hei)*$newratio), $hei);//重采样拷贝部分图像并调整大小

}

//目标图像变宽了,保持宽度不变,根据比例改变新图像的高度。

else

{

imagecopyresampled($newimg, $im, 0, 0, 0, 0, $width, $height, $wid, (($wid)/$newratio));

}

ImageJpeg ($newimg,$newname);//以 JPEG 格式将图像输出到浏览器或文件

ImageDestroy ($im);//释放图像句柄

}

$filename = "Winter.jpg";//图片名

resizeimage($filename, 120, 90);//调用缩放图像函数

?>

结果:

PHP GD函数库处理图像


注:

1)strrchr

strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。

注释:该函数是二进制安全的。

语法

strrchr(string,char)

参数描述

string必需。规定要搜索的字符串。

char必需。规定要查找的字符。如果该参数是数字,则搜索匹配此数字的 ASCII 值的字符。

返回值:

返回从某个字符串在另一个字符串中最后一次出现的位置到主字符串结尾的所有字符。

如果未找到此字符,则返回 FALSE。

2)substr

substr() 函数返回字符串的一部分。

注释:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。

语法

substr(string,start,length)

参数描述

string必需。规定要返回其中一部分的字符串。

start

必需。规定在字符串的何处开始。

正数 - 在字符串的指定位置开始

负数 - 在从字符串结尾开始的指定位置开始

0 - 在字符串中的第一个字符处开始

length

可选。规定被返回字符串的长度。默认是直到字符串的结尾。

正数 - 从 start 参数所在的位置返回的长度

负数 - 从字符串末端返回的长度

返回值:返回字符串的提取部分,若失败则返回 FALSE,或者返回一个空字符串。

3)imagecreatefrom 系列函数用于从文件或 URL 载入一幅图像。

载入图像

imagecreatefrom 系列函数用于从文件或 URL 载入一幅图像,成功返回图像资源,失败则返回一个空字符串。

该系列函数有:

imagecreatefromgif():创建一块画布,并从 GIF 文件或 URL 地址载入一副图像

imagecreatefromjpeg():创建一块画布,并从 JPEG 文件或 URL 地址载入一副图像

imagecreatefrompng():创建一块画布,并从 PNG 文件或 URL 地址载入一副图像

imagecreatefromwbmp():创建一块画布,并从 WBMP 文件或 URL 地址载入一副图像

imagecreatefromstring():创建一块画布,并从字符串中的图像流新建一副图像

4)strlen() 函数返回字符串的长度。

语法

strlen(string)

参数描述

string必需。规定要检查的字符串。

返回值:若成功则返回字符串的长度,若字符串为空则返回 0。

5)PHP 获取图像宽度函数:imagesx()

imagesx() 函数用于获取图像的宽度,单位为像素,返回值为整型。

语法:

int imagesx( resource image )

参数 image 为如 imagecreatetruecolor()、imagecreatefromjpeg() 等函数返回的图像资源。

PHP 获取图像高度函数:imagesy()

imagesy() 函数用于获取图像的高度,语法及用法同 imagesx() 。

语法:

int imagesy( resource image )

参数 image 为如 imagecreatetruecolor()、imagecreatefromjpeg() 等函数返回的图像资源。

6)imagecopyresampled — 重采样拷贝部分图像并调整大小

说明

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 ) : bool

imagecopyresampled() 将一幅图像中的一块正方形区域拷贝到另一个图像中,平滑地插入像素值,因此,尤其是,减小了图像的大小而仍然保持了极大的清晰度。

如果源和目标的宽度和高度不同,则会进行相应的图像收缩和拉伸。坐标指的是左上角。本函数可用来在同一幅图内部拷贝(如果 dst_image 和 src_image 相同的话)区域,但如果区域交迭的话则结果不可预知。

参数

dst_image

目标图象连接资源。

src_image

源图象连接资源。

dst_x

目标 X 坐标点。

dst_y

目标 Y 坐标点。

src_x

源的 X 坐标点。

src_y

源的 Y 坐标点。

dst_w

目标宽度。

dst_h

目标高度。

src_w

源图象的宽度。

src_h

源图象的高度。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE。

7)PHP 输出图像

PHP 允许将图像以不同格式输出:

imagegif():以 GIF 格式将图像输出到浏览器或文件

imagejpeg():以 JPEG 格式将图像输出到浏览器或文件

imagepng():以 PNG 格式将图像输出到浏览器或文件

imagewbmp():以 WBMP 格式将图像输出到浏览器或文件

语法:

bool imagegif ( resource image [, string filename] )

bool imagejpeg ( resource image [, string filename [, int quality]] )

bool imagepng ( resource image [, string filename] )

bool imagewbmp ( resource image [, string filename [, int foreground]] )

参数说明:

参数说明

image欲输出的图像资源,如 imagecreate() 或 imagecreatefrom 系列函数的返回值

filename可选,指定输出图像的文件名。如果省略,则原始图像流将被直接输出。

quality可选,指定图像质量,范围从 0(最差质量,文件最小)到 100(最佳质量,文件最大),默认75 ,imagejpeg() 独有参数

foreground可选,指定前景色,默认前景色是黑色,imagewbmp() 独有参数

4.绘制文本图像

例:button.php

<?php

header("Content-type: image/png");//向客户端发送原始的 HTTP 报头。Content-type: image/png

$string = "Button"; //定义一个字符变量$string 为Button

$im = imagecreate(80,30);//创建80*30像素的画布资源

$red = imagecolorallocate($im, 200, 100, 100);//为$im画布设置图像颜色 浅红

$blue = imagecolorallocate($im,0,0,255);//为$im画布设置图像颜色 蓝色

$px = (imagesx($im) - 7.5 * strlen($string)) / 2; //x坐标

imagestring($im, 4, $px, 10, $string, $blue);//用 $blue 颜色将字符串 $string画到 image 所代表的图像的 x,y 坐标处($px, 10)(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果 font 是 1,2,3,4 或 5,则使用内置字体。

imagepng($im);//输出图象到浏览器或文件。

imagedestroy($im);//销毁一图像句柄

?>

结果:

PHP GD函数库处理图像


注:imagestring — 水平地画一行字符串

说明

imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col ) : bool

imagestring() 用 col 颜色将字符串 s 画到 image 所代表的图像的 x,y 坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果 font 是 1,2,3,4 或 5,则使用内置字体。


本文仅代表作者个人观点,不代表巅云官方发声,对观点有疑义请先联系作者本人进行修改,若内容非法请联系平台管理员,邮箱2522407257@qq.com。更多相关资讯,请到巅云www.yinxi.net学习互联网营销技术请到巅云建站www.yx10011.com。