解析php常用image图像函数集,gd等比例缩放压缩图片函数_php技巧_脚本之家
分类:面向对象

gd_info函数:获取当前安装的GD库的信息 
getimagesize函数:获取图像的大小 
image_type_to_extension函数:获取图像类型的文件后缀 
image_type_to_mime_type函数:判断一个IMAGETYPE常量的MIME类型 
image2wbmp函数:以WBMP格式将图像输出到浏览器或文件 
imagealphablending函数:设定图像的混色模式 
imageantialias函数:是否使用antialias(抗锯齿)功能 
imagearc函数:画椭圆弧 
imagechar函数:水平地画一个字符 
imagecharup函数:垂直地画一个字符 
imagecolorallocate函数:为一幅图像分配颜色 
imagecolorallocatealpha 函数:为一幅图像分配颜色+alpha 
imagecolorat函数:获取某像素的颜色索引值 
imagecolorclosest函数:获取与指定颜色最接近的颜色的索引值 
imagecolorclosestalpha函数:获取与指定颜色加透明度最接近的颜色的索引值
imagecolorclosesthwb函数:获取与指定颜色最接近的色度的黑白色的索引 
imagecolordeallocate函数:取消图像颜色的分配 
imagecolorexact函数:获取指定颜色的索引值 
imagecolorexactalpha函数:获取指定颜色加透明度的索引值 
imagecolormatch函数:使一个图像中调色板版本的颜色与真彩色版本更能匹配
imagecolorresolve函数:获取指定颜色的索引值或有可能得到的最接近的替代值
imagecolorresolvealpha函数:获取指定颜色透明度的索引值或有可能得到的最接近的替代值 
imagecolorset函数:给指定调色板索引设定颜色 
imagecolorsforindex函数:获取某索引的颜色 
imagecolorstotal函数:获取一幅图像的调色板中颜色的数目 
imagecolortransparent函数:将某个颜色定义为透明色 
imageconvolution函数:申请一个3*3的卷积矩阵 
imagecopy函数:复制图像的一部分 
imagecopymerge函数:复制并合并图像的一部分 
imagecopymergegray函数:用灰度复制并合并图像的一部分
imagecopyresampled函数:重采样复制部分图像并调整大小
imagecopyresized函数:复制部分图像并调整大小
imagecreate函数:新建一个基于调色板的图像

本文实例为大家分享了php gd等比例缩放压缩图片函数,供大家参考,具体内容如下

PHP中GD库的使用

imagecreatefromgd2函数:从GD 2文件或URL中新建一个图像 
imagecreatefromgd2part函数:从给定的GD 2文件或URL中的一部分新建一个图像
imagecreatefromgd函数:从GD文件或URL中新建一个图像
imagecreatefromgif函数:从GIF文件或URL中新建一个图像
imagecreatefromjpeg函数:从JPEG文件或URL中新建一个图像
imagecreatefrompng函数:从PNG文件或URL中新建一个图像
imagecreatefromstring函数:从字符串中的图像流新建一个图像
imagecreatefromwbmp函数:从WBMP文件或URL中新建一个图像
imagecreatefromxbm函数:从XBM文件或URL中新建一个图像
imagecreatefromxpm函数:从XPM文件或URL中新建一个图像
imagecreatetruecolor函数:新建一个真彩色图像
imagedashedline函数:画一条虚线
imagedestroy函数:销毁一个图像
imageellipse函数:画一个椭圆
imagefill函数:用指定颜色填充一个区域
imagefilledarc函数:画一个椭圆弧并填充
imagefilledellipse函数:画一个椭圆并填充
imagefilledpolygon函数:画一个多边形并填充
imagefilledrectangle函数:画一个矩形并填充
imagefilltoborder函数:区域填充到指定颜色的边界为止
imagefilter函数:对图像使用过滤器
imagefontheight函数:获取字体高度
imagefontwidth函数:获取字体宽度
imageftbbox函数:给出一个使用FreeType2字体的文本框
imagefttext函数:使用FreeType2字体将文本写入图像
imagegammacorrect函数:对GD图像应用gamma修正
imagegd2函数:将GD 2图像输出到浏览器或文件
imagegd函数:将GD图像输出到浏览器或文件
imagegif函数:以GIF格式将图像输出到浏览器或文件
imageinterlace函数:激活或禁止隔行扫描
imageistruecolor函数:检查图像是否为真彩色图像
imagejpeg函数:以JPEG格式将图像输出到浏览器或文件
imagelayereffect函数:设定alpha混色标志以使用绑定的libgd分层效果
imageline函数:画一条线段
imageloadfont函数:载入一个新字体
imagepalettecopy函数:将调色板从一幅图像复制到另一幅
imagepng函数:以PNG格式将图像输出到浏览器或文件
imagepolygon函数:画一个多边形
imagepsbbox函数:给出一个使用PostScript Type1字体的文本框
imagepsencodefont函数:改变字体中的字符编码矢量
imagepsextendfont函数:扩充或精简字体
imagepsfreefont函数:释放一个PostScript Type1字体所占用的内存
imagepsloadfont函数:从文件中加载一个PostScript Type1字体
imagepsslantfont函数:倾斜某字体
imagepstext函数:用PostScript Type1字体把文本字符串画在图像上
imagerectangle函数:画一个矩形
imagerotate函数:用给定角度旋转图像
imagesavealpha函数:设置标记以在保存PNG图像时保存完整的alpha通道信息
imagesetbrush 函数:设定画线用的画笔图像 
imagesetpixel函数:画一个单一的像素
imagesetstyle函数:设定画线的风格
imagesetthickness函数:设定画线的宽度
imagesettile函数:设定用于填充的贴图
imagestring函数:水平地画一行字符串 
imagestringup函数:垂直地画一行字符串
imagesx函数:获取图像宽度 
imagesy函数:获取图像高度 
imagetruecolortopalette函数:将真彩色图像转换为调色板图像 
imagettfbbox函数:取得使用TrueType字体的文本的范围
imagettftext函数:用TrueType字体向图像写入文本 
imagetypes函数:返回当前PHP版本所支持的图像类型
imagewbmp函数:以WBMP格式将图像输出到浏览器或文件
imagexbm函数:将XBM图像输出到浏览器或文件 
iptcembed函数:将二进制IPTC数据嵌入一幅JPEG图像中 
iptcparse函数:将二进制IPTC块解析为单个标记
jpeg2wbmp函数:将JPEG图像文件转换为WBMP图像文件
png2wbmp函数:将PNG图像文件转换为WBMP图像文件

600?600:$width)*0.9; $new_height =($height>600?600:$height)*0.9; switch{ case 1: $giftype=check_gifcartoon; if{ header('Content-Type:image/gif'); $image_wp=imagecreatetruecolor($new_width, $new_height); $image = imagecreatefromgif; imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); //75代表的是质量、压缩图片容量大小 imagejpeg($image_wp, $imgdst,75); imagedestroy; } break; case 2: header('Content-Type:image/jpeg'); $image_wp=imagecreatetruecolor($new_width, $new_height); $image = imagecreatefromjpeg; imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); //75代表的是质量、压缩图片容量大小 imagejpeg($image_wp, $imgdst,75); imagedestroy; break; case 3: header('Content-Type:image/png'); $image_wp=imagecreatetruecolor($new_width, $new_height); $image = imagecreatefrompng; imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); //75代表的是质量、压缩图片容量大小 imagejpeg($image_wp, $imgdst,75); imagedestroy; break; } }

GD简介

PHP 不仅限于只产生 HTML 的输出,还可以创建及操作多种不同格式的图像文件。PHP提供了一些内置的图像信息函数,也可以使用GD函数库创建新图像或处理已有的图像。目前GD2库支持GIF、JPEG、PNG和WBMP等格式。此外还支持一些FreeType、Type1等字体库。

  • JPEG 是一种压缩标准的名字,通常是用来存储照片或者存储具有丰富色彩和色彩层次的图像。这种格式使用了有损压缩。

  • PNG 是可移植的网络图像,对图像采用了无损压缩标准。

  • GIF 原义是“图像互换格式”,是一种基于LZW算法的连续色调的无损压缩格式 。

php and gd 函数参考表gd_info取得当前安装的 GD 库的信息getimagesize取得图像大小getimagesizefromstringGet the size of an image from a stringimage_type_to_extension取得图像类型的文件后缀image_type_to_mime_type取得 getimagesize,exif_read_data,exif_thumbnail,exif_imagetype 所返回的图像类型的 MIME 类型image2wbmp以 WBMP 格式将图像输出到浏览器或文件imageaffineReturn an image containing the affine tramsformed src image, using an optional clipping areaimageaffinematrixconcatConcat two matrices (as in doing many ops in one go)imageaffinematrixgetReturn an image containing the affine tramsformed src image, using an optional clipping areaimagealphablending设定图像的混色模式imageantialias是否使用抗锯齿功能imagearc画椭圆弧imagechar水平地画一个字符imagecharup垂直地画一个字符imagecolorallocate为一幅图像分配颜色imagecolorallocatealpha为一幅图像分配颜色 + alphaimagecolorat取得某像素的颜色索引值imagecolorclosest取得与指定的颜色最接近的颜色的索引值imagecolorclosestalpha取得与指定的颜色加透明度最接近的颜色imagecolorclosesthwb取得与给定颜色最接近的色度的黑白色的索引imagecolordeallocate取消图像颜色的分配imagecolorexact取得指定颜色的索引值imagecolorexactalpha取得指定的颜色加透明度的索引值imagecolormatch使一个图像中调色板版本的颜色与真彩色版本更能匹配imagecolorresolve取得指定颜色的索引值或有可能得到的最接近的替代值imagecolorresolvealpha取得指定颜色

在PHP中创建一个图像应该完成如下所示的4个步骤:
  1. 创建一个背景图像(也叫画布),以后的操作都基于此背景图像。

  2. 在背景上绘制图像轮廓或输入文本。

  3. 输出最终图形

  4. 释放资源

<?php       
    //1. 创建画布 
    $im = imageCreateTrueColor(200, 200);       //建立空白背景
    $white = imageColorAllocate ($im, 255, 255, 255);   //设置绘图颜色
    $blue  = imageColorAllocate ($im, 0, 0, 64);
    //2. 开始绘画
    imageFill($im, 0, 0, $blue);                            //绘制背景
    imageLine($im, 0, 0, 200, 200, $white);         //画线
    imageString($im, 4, 50, 150, 'Sales', $white);      //添加字串
    //3. 输出图像
    header('Content-type: image/png');
    imagePng ($im);     //以 PNG 格式将图像输出
    //4. 释放资源
    imageDestroy($im);  
?>
  • alpha 的索引值或有可能得到的最接近的替代值imagecolorset给指定调色板索引设定颜色imagecolorsforindex取得某索引的颜色imagecolorstotal取得一幅图像的调色板中颜色的数目imagecolortransparent将某个颜色定义为透明色imageconvolution用系数 div 和 offset 申请一个 3x3 的卷积矩阵imagecopy拷贝图像的一部分imagecopymerge拷贝并合并图像的一部分imagecopymergegray用灰度拷贝并合并图像的一部分imagecopyresampled重采样拷贝部分图像并调整大小imagecopyresized拷贝部分图像并调整大小imagecreate新建一个基于调色板的图像imagecreatefromgd2从 GD2 文件或 URL 新建一图像imagecreatefromgd2part从给定的 GD2 文件或 URL 中的部分新建一图像imagecreatefromgd从 GD 文件或 URL 新建一图像imagecreatefromgif由文件或 URL 创建一个新图象。imagecreatefromjpeg由文件或 URL 创建一个新图象。imagecreatefrompng由文件或 URL 创建一个新图象。imagecreatefromstring从字符串中的图像流新建一图像imagecreatefromwbmp由文件或 URL 创建一个新图象。imagecreatefromwebp由文件或 URL 创建一个新图象。imagecreatefromxbm由文件或 URL 创建一个新图象。imagecreatefromxpm由文件或 URL 创建一个新图象。imagecreatetruecolor新建一个真彩色图像imagecropCrop an image using the given coordinates and size, x, y, width and heightimagecropautoCrop an image automatically using one of the available modesimagedashedline画一虚线imagedestroy销毁一图像imageellipse画一个椭圆imagefill区域填充imagefilledarc画一椭圆弧且填充imagefilledellipse画一椭圆并填充imagefilledpolygon画一多边形并填充imagefilledrectangle画一矩形并填充imagefilltoborder区域填充到指定颜色的边界为止imagefilter对图像使用过滤器imageflipFlips an image using a given modeimagefontheight取得字体高度imagefontwidth取得字体宽度imageftbbox给出一个使用 FreeType 2 字体的文本框imagefttext使用 FreeType 2 字体将文本写入图像imagegammacorrect对 GD 图像应用 gamma 修正imagegd2将 GD2 图像输出到浏览器或文件imagegd将 GD 图像输出到浏览器或文件imagegif输出图象到浏览器或文件。imagegrabscreenCaptures the whole screenimagegrabwindowCaptures a windowimageinterlace激活或禁止隔行扫描imageistruecolor检查图像是否为真彩色图像imagejpeg输出图象到浏览器或文件。imagelayereffect设定 alpha 混色标志以使用绑定的 libgd 分层效果imageline画一条线段imageloadfont载入一新字体imagepalettecopy将调色板从一幅图像拷贝到另一幅imagepalettetotruecolorConverts a palette based image to true colorimagepng以 PNG 格式将图像输出到浏览器或文件imagepolygon画一个多边形imagepsbbox给出一个使用 PostScript Type1 字体的文本方框imagepsencodefont改变字体中的字符编码矢量imagepsextendfont扩充或精简字体imagepsfreefont释放一个 PostScript Type 1 字体所占用的内存imagepsloadfont从文件中加载一个 PostScript Type 1 字体imagepsslantfont倾斜某字体imagepstext用 PostScript Type1 字体把文本字符串画在图像上imagerectangle画一个矩形imagerotate用给定角度旋转图像imagesavealpha设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息imagescaleScale an image using the given new width and heightimagesetbrush设定画线用的画笔图像imagesetinterpolationSet the interpolation methodimagesetpixel画一个单一像素imagesetstyle设定画线的风格imagesetthickness设定画线的宽度imagesettile设定用于填充的贴图imagestring水平地画一行字符串imagestringup垂直地画一行字符串imagesx取得图像宽度imagesy取得图像高度imagetruecolortopalette将真彩色图像转换为调色板图像imagettfbbox取得使用 TrueType 字体的文本的范围imagettftext用 TrueType 字体向图像写入文本imagetypes返回当前 PHP 版本所支持的图像类型imagewbmp以 WBMP 格式将图像输出到浏览器或文件imagewebpOutput an WebP image to browser or fileimagexbm将 XBM 图像输出到浏览器或文件iptcembed将二进制 IPTC 数据嵌入到一幅 JPEG 图像中iptcparse将二进制 IPTC 块解析为单个标记jpeg2wbmp将 JPEG 图像文件转换为 WBMP 图像文件png2wbmp将 PNG 图像文件转换为 WBMP 图像文件

画布管理

  • imagecreate -- 新建一个基于调色板的图像
resource imagecreate ( int x_size, int y_size )

本函数用来建立空新画布,参数为图片大小,单位为像素 (pixel)。支持256色。

  • imagecreatetruecolor -- 新建一个真彩色图像
resource imagecreatetruecolor ( int x_size, int y_size )

新建一个真彩色图像画布 ,需要 GD 2.0.1 或更高版本,不能用于 GIF 文件格式。

  • imagedestroy -- 销毁一图像
bool imagedestroy ( resource image ) 

imagedestroy() 释放与 image 关联的内存。

以上就是本文的全部内容,希望对大家学习PHP程序设计有所帮助。

设置颜色

  • imagecolorallocate -- 为一幅图像分配颜色
语法:int imagecolorallocate ( resource image, int red, int green, int blue )

imagecolorallocate() 返回一个标识符,代表了由给定的 RGB 成分组成的颜色。red,green 和 blue 分别是所需要的颜色的红,绿,蓝成分。

这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。

imagecolorallocate() 必须被调用以创建每一种用在 image 所代表的图像中的颜色

$im    = imagecreatetruecolor(100, 100); //创建画布的大小为100x100
$red   = imagecolorallocate($im, 255, 0, 0); //由十进制整数设置一个颜色
$white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF); // 十六进制方式
  • imagepolygon -- 画一个多边形
语法:bool imagepolygon ( resource image, array points, int num_points, int color )

imagepolygon() 在图像中创建一个多边形。points 是一个 PHP 数组,包含了多边形的各个顶点坐标,即 points[0] = x0,points[1] = y0,points[2] = x1,points[3] = y1,以此类推。num_points 是顶点的总数。

  • imagefilledpolygon -- 画一多边形并填充
语法:bool imagefilledpolygon ( resource image, array points, int num_points, int color )

imagefilledpolygon() 在 image 图像中画一个填充了的多边形。points 参数是一个按顺序包含有多边形各顶点的 x 和 y 坐标的数组。 num_points 参数是顶点的总数,必须大于 3。

生成图像

  • imagegif -- 以 GIF 格式将图像输出到浏览器或文件
语法:bool imagegif (resource image [,string filename] ) 
  • imagejpeg -- 以 JPEG 格式将图像输出到浏览器或文件
语法:bool imagejpeg (resource image [,string filename [, int quality]] ) 
  • imagepng -- 以 PNG 格式将图像输出到浏览器或文件
语法:bool imagepng (resource image [,string filename] )
  • imagewbmp -- 以 WBMP 格式将图像输出到浏览器或文件
语法:bool imagewbmp (resource image [, string filename [, int foreground]] ) 

绘制图像

  • imagefill -- 区域填充
语法:bool imagefill(resource image,int x,int y, int color) 

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

  • imagesetpixel -- 画一个单一像素
语法:bool imagesetpixel ( resource image, int x, int y, int color ) 

imagesetpixel() 在 image 图像中用 color 颜色在 x,y 坐标(图像左上角为 0,0)上画一个点。

  • imageline -- 画一条线段
语法:bool imageline ( resource image, int x1, int y1, int x2, int y2, int color ) 

imageline() 用 color 颜色在图像 image 中从坐标 x1,y1 到 x2,y2(图像左上角为 0, 0)画一条线段。

  • imagerectangle -- 画一个矩形
语法:bool imagerectangle ( resource image, int x1, int y1, int x2, int y2, int col )

imagerectangle() 用 col 颜色在 image 图像中画一个矩形,其左上角坐标为 x1, y1,右下角坐标为 x2, y2。图像的左上角坐标为 0, 0。

  • imagefilledrectangle -- 画一矩形并填充
语法:bool imagefilledrectangle ( resource image, int x1, int y1, int x2, int y2, int color )

imagefilledrectangle() 在 image 图像中画一个用 color 颜色填充了的矩形,其左上角坐标为 x1,y1,右下角坐标为 x2,y2。0, 0 是图像的最左上角。

  • imageellipse -- 画一个椭圆
语法:bool imageellipse ( resource image, int cx, int cy, int w, int h, int color )

imageellipse() 在 image 所代表的图像中画一个中心为 cx,cy(图像左上角为 0, 0)的椭圆。w 和 h 分别指定了椭圆的宽度和高度,椭圆的颜色由 color 指定。

  • imagefilledellipse -- 画一椭圆并填充
语法:bool imagefilledellipse ( resource image, int cx, int cy, int w, int h, int color )

imagefilledellipse() 在 image 所代表的图像中以 cx,cy(图像左上角为 0, 0)为中心画一个椭圆。w 和 h 分别指定了椭圆的宽和高。椭圆用 color 颜色填充。如果成功则返回 TRUE,失败则返回 FALSE。

  • 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°位于三点钟位置,以顺时针方向绘画。

  • imagefilledarc -- 画一椭圆弧且填充
bool imagefilledarc ( resource image, int cx, int cy, int w, int h, int s, int e, int color, int style )

imagefilledarc() 在 image 所代表的图像中以 cx,cy(图像左上角为 0, 0)画一椭圆弧。如果成功则返回 TRUE,失败则返回 FALSE。w 和 h 分别指定了椭圆的宽和高,s 和 e 参数以角度指定了起始和结束点。style 可以是下列值按位或(OR)后的值:
IMG_ARC_PIE IMG_ARC_CHORD
IMG_ARC_NOFILL IMG_ARC_EDGED
IMG_ARC_PIE 和 IMG_ARC_CHORD 是互斥的;IMG_ARC_CHORD 只是用直线连接了起始和结束点,IMG_ARC_PIE 则产生圆形边界。IMG_ARC_NOFILL 指明弧或弦只有轮廓,不填充。IMG_ARC_EDGED 指明用直线将起始和结束点与中心点相连,和 IMG_ARC_NOFILL 一起使用是画饼状图轮廓的好方法(而不用填充)。

在图像中绘制文字

  • imagestring -- 水平地画一行字符串
语法:bool imagestring ( resource image, int font, int x, int y, string s, int col )

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

  • imagestringup -- 垂直地画一行字符串
语法:bool imagestringup ( resource image, int font, int x, int y, string s, int col )
  • imagechar -- 水平地画一个字符
语法:bool imagechar ( resource image, int font, int x, int y, string c, int color )

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

  • imagecharup -- 垂直地画一个字符
语法:bool imagecharup ( resource image, int font, int x, int y, string c, int color )

imagecharup() 将字符 c 垂直地画在 image 指定的图像上,位于 x,y(图像左上角为 0, 0),颜色为 color。如果 font 为 1,2,3,4 或 5,则使用内置的字体。

  • imagettftext -- 用 TrueType 字体向图像写入文本
语法 :array imagettftext ( resource image, float size, float angle, int x, int y, int color, string fontfile, string text ) 
  • imagestring()用 col 颜色将字符串 s 垂直地画到 image 所代表的图像的 x, y 座标处(图像的左上角为 0, 0)。如果 font 是 1,2,3,4 或 5,则使用内置字体。

验证码的绘制和使用

验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机和人的公共全自动程序。

使用验证码的目的:可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。
验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,百度社区)。
验证码的样式也是千奇百态,本节重点讲解使用GD库绘制图像的方式。

设计验证码的步骤

gd库支持

  1. 生成底图
    产生一块图片
    创建画布
    $img=imagecreatetruecolor('x','y')
    准备颜色
    $bgcolor=imagecolorallocate($img,255,255,255)
    填充颜色
    imagefill($image,'x','y',$bgcolor)

  2. 在图片中生成干扰元素
    在底图上显示随机数字
    准备字体颜色
    可随机
    $fontcolor=imagecolorallocate($img,0,0,0);
    准备字体大小
    $fontsize=10
    准备字体内容
    $content = rand(0,9)
    将内容填充到画布上
    imagestring($img,$fontsize,$x,$y,$content,$fontcolor)
    注意:控制好字体大小与分布,避免字体重叠或显示不全
    为验证码增加干扰元素,干扰的点或线
    准备点的颜色
    可随机
    $pointcolor=imagecolorallocate($img,175,175,175)
    画点
    imagesetpixel($img,$x,$y,$pointcolor)
    增加线干扰元素
    准备颜色
    可随机
    $linecolor=imagecolorallocate($img,90,90,90)
    画线
    imageline($img,x,y,x,y,$linecolor)
    注意:干扰元素一定要控制好颜色,避免喧宾夺主

  3. 生成验证内容
    生成无规律内容
    数字、字母、数字加字母
    服务器保存改内容

  4. 生成验证码图片
    输出
    header('content-type:image/png')
    imagepng($rimg)
    销毁资源
    imagedestroy($img)

  5. 校验验证内容
    在服务器记录验证码信息,便于用户输入后做校验
    session_start()
    必须处于脚本最顶部
    多服务器情况,需要考虑集中管理session信息
    用户输入对比服务器保存内容

PHP图片处理(缩放、裁剪、水印、旋转和翻转)

图片背景管理

从指定的图片文件或 URL地址来新建一个图像。成功则返回一个图像标识符,失败时返回一个空字符串,并且输出一条错误信息。

由于格式不同,则需要分别使用对应图片背景处理函数。

  • 从 PNG 文件或 URL 新建一图像
resource imagecreatefrompng ( string filename )
  • 从 JPEG 文件或 URL 新建一图像
resource imagecreatefromjpeg ( string filename ) 
  • 从 GIF 文件或 URL 新建一图像
resource imagecreatefromgif ( string filename )
  • 从 WBMP 文件或 URL 新建一图像
resource imagecreatefromwbmp ( string filename )

其他图像处理函数:

  • 取得图像宽度
int imagesx ( resource image )
  • 取得图像高度
int imagesy ( resource image ) 
  • 取得图像大小、类型等信息
array getimagesize ( string $filename [, array &$imageinfo ] )

图片缩放和裁剪

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 )

重采样拷贝部分图像并调整大小,是将一幅图像中的一块正方形区域拷贝到另一个图像中,平滑地插入像素值,因此,尤其是,减小了图像的大小而仍然保持了极大的清晰度。成功时返回 TRUE, 或者在失败时返回 FALSE。其中dst_image 和 src_image 分别是目标图像和源图像的标识符。

添加图片水印

bool imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )

拷贝图像的一部分(也就是图片合成)。
将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。

图片旋转和翻转

resource imagerotate ( resource $src_im , float $angle , int $bgd_color [, int $ignore_transparent ] )

用给定角度旋转图像
将 src_im 图像用给定的 angle 角度旋转。bgd_color 指定了旋转后没有覆盖到的部分的颜色。
旋转的中心是图像的中心,旋转后的图像会按比例缩小以适合目标图像的大小——边缘不会被剪去。
如果 ignore_transparent 被设为非零值,则透明色会被忽略(否则会被保留)。

Have a try

  1. 使用GD库实现验证码?
  2. 实现在一张图片上添加文字水印。
  3. 实现一张图片的等比缩小一半的处理(如a.jpg图片会生成一个s_a.jpg的小图);

本文由10bet手机官网发布于面向对象,转载请注明出处:解析php常用image图像函数集,gd等比例缩放压缩图片函数_php技巧_脚本之家

上一篇:解析php dirname()与 下一篇:MYSQL时间戳如何转化为一般时间格式
猜你喜欢
热门排行
精彩图文