目录

exif扩展

通过使用 exif 扩展,你可以操作图像元数据。例如:你可以使用 exif 相关的函数从数码相机拍摄的图片文件中读取元数据。通常 JPEG 和 TIFF 格式的图像文件都包含元数据。

  • exif_imagetype — 判断一个图像的类型

    返回的是int类型。比如常用的:

    • 1 IMAGETYPE_GIF
    • 2 IMAGETYPE_JPEG
    • 3 IMAGETYPE_PNG
  • exif_read_data — 从 JPEG 或 TIFF 文件中读取 EXIF 头信息

    EXIF 头信息往往存在于数码相机生成的 JPEG/TIFF 图像中,但不幸的是每个数码相机制造商的标记都不同,因此(编写代码时)不能依赖于某个特定的 Exif 头信息。

    exif_read_data("tsingchan.JPG");
    //输出:
    Array
    (
        [FileName] => tsingchan.JPG
        [FileDateTime] => 1550741190
        [FileSize] => 92044
        [FileType] => 2
        [MimeType] => image/jpeg
        [SectionsFound] => ANY_TAG, IFD0, THUMBNAIL, EXIF
        [COMPUTED] => Array
            (
                [html] => width="640" height="640"
                [Height] => 640
                [Width] => 640
                [IsColor] => 1
                [ByteOrderMotorola] => 1
                [Thumbnail.FileType] => 2
                [Thumbnail.MimeType] => image/jpeg
            )
    
        [Orientation] => 1
        [XResolution] => 72/1
        [YResolution] => 72/1
        [ResolutionUnit] => 2
        [YCbCrPositioning] => 1
        [Exif_IFD_Pointer] => 102
        [THUMBNAIL] => Array
            (
                [Compression] => 6
                [XResolution] => 72/1
                [YResolution] => 72/1
                [ResolutionUnit] => 2
                [JPEGInterchangeFormat] => 286
                [JPEGInterchangeFormatLength] => 14296
            )
    
        [ExifVersion] => 0221
        [ComponentsConfiguration] => 
        [FlashPixVersion] => 0100
        [ColorSpace] => 1
        [ExifImageWidth] => 640
        [ExifImageLength] => 640
        [SceneCaptureType] => 0
    )
    
  • exif_tagname — 获取指定索引的头名称

  • exif_thumbnail — 取得嵌入在 TIFF 或 JPEG 图像中的缩略图

    exif_thumbnail() 读取 TIFF 或 JPEG 图像中的嵌入缩略图。如果图像不包含缩略图则返回 FALSE。

  • read_exif_data — 别名 exif_read_data

GD扩展和图像处理函数

  • gd_info — 取得当前安装的 GD 库的信息

  • getimagesize — 取得图像大小

    本函数不需要 GD 图像库。

    返回:像素值、图像类型标记、channels 对于 RGB 图像其值为 3,对于 CMYK 图像其值为 4。bits 是每种颜色的位数。以及符合该图像的 MIME 类型,此信息可以用来在 HTTP Content-type 头信息中发送正确的信息:

    Array
    (
        [0] => 640
        [1] => 640
        [2] => 2
        [3] => width="640" height="640"
        [bits] => 8
        [channels] => 3
        [mime] => image/jpeg
    )
    
  • getimagesizefromstring — 从字符串中获取图像尺寸信息

    同 getimagesize() 函数。区别是 getimagesizefromstring() 第一个参数是图像数据的字符串表达,而不是文件名。

    $info = getimagesize($imageFilename);
    $info = getimagesizefromstring(file_get_contents($imageFilename));
    
  • image_type_to_extension — 取得图像类型的文件后缀

    根据给定的常量 IMAGETYPE_XXX 返回后缀名。 比如:

    • 1 IMAGETYPE_GIF
    • 2 IMAGETYPE_JPEG
    • 3 IMAGETYPE_PNG
  • image_type_to_mime_type — 取得 getimagesize,exif_read_data,exif_thumbnail,exif_imagetype 所返回的图像类型的 MIME 类型

    image_type对应mime_type值:

    • IMAGETYPE_GIF image/gif
    • IMAGETYPE_JPEG image/jpeg
    • IMAGETYPE_PNG image/png
  • image2wbmp — 以 WBMP 格式将图像输出到浏览器或文件

  • imageaffine — 返回经过仿射变换后的图像,剪切区域可选

  • imageaffinematrixconcat — Concatenate two affine transformation matrices

  • imageaffinematrixget — Get an affine transformation matrix

  • imagealphablending — 设定图像的混色模式

  • imageantialias — 是否使用抗锯齿(antialias)功能

  • imagearc — 画椭圆弧

    imagearc() 以 cx,cy(图像左上角为 0, 0)为中心在 image 所代表的图像中画一个椭圆弧。w 和 h 分别指定了椭圆的宽度和高度,起始和结束点以 s 和 e 参数以角度指定。0°位于三点钟位置,以顺时针方向绘画。

    // 创建一个 200X200 的图像
    $img = imagecreatetruecolor(200, 200);
    // 分配颜色
    $white = imagecolorallocate($img, 255, 255, 255);
    $black = imagecolorallocate($img, 0, 0, 0);
    // 画一个黑色的圆
    imagearc($img, 100, 100, 150, 150, 0, 360, $white);
    // 将图像输出到浏览器
    header("Content-type: image/png");
    imagepng($img);
    // 释放内存
    imagedestroy($img);
    
  • imagechar — 水平地画一个字符

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

    $im = imagecreate(100,100);
    
    $string = 'Tsing';
    
    $bg = imagecolorallocate($im, 255, 255, 255);
    $black = imagecolorallocate($im, 0, 0, 0);
    
    // prints a black "P" in the top left corner
    imagechar($im, 5, 30, 30, $string, $black);
    
    header('Content-type: image/png');
    imagepng($im);
    
  • imagecharup — 垂直地画一个字符

  • imagecolorallocate — 为一幅图像分配颜色

    imagecolorallocate() 返回一个标识符,代表了由给定的 RGB 成分组成的颜色。red,green 和 blue 分别是所需要的颜色的红,绿,蓝成分。这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。imagecolorallocate() 必须被调用以创建每一种用在 image 所代表的图像中的颜色。

    注意:第一次对 imagecolorallocate() 的调用会给基于调色板的图像填充背景色,即用 imagecreate() 建立的图像。

  • imagecolorallocatealpha — 为一幅图像分配颜色 + alpha

    imagecolorallocatealpha() 的行为和 imagecolorallocate() 相同,但多了一个额外的透明度参数 alpha,其值从 0 到 127。0 表示完全不透明,127 表示完全透明。

  • imagecolorat — 取得某像素的颜色索引值

    返回 image 所指定的图形中指定位置像素的颜色索引值。

    如果 PHP 编译时加上了 GD 库 2.0 或更高的版本并且图像是真彩色图像,则本函数以整数返回该点的 RGB 值。用移位加掩码来取得红,绿,蓝各自成分的值:

  • imagecolorclosest — 取得与指定的颜色最接近的颜色的索引值

  • imagecolorclosestalpha — 取得与指定的颜色加透明度最接近的颜色

  • imagecolorclosesthwb — 取得与给定颜色最接近的色度的黑白色的索引

  • imagecolordeallocate — 取消图像颜色的分配

  • imagecolorexact — 取得指定颜色的索引值

  • imagecolorexactalpha — 取得指定的颜色加透明度的索引值

  • imagecolormatch — 使一个图像中调色板版本的颜色与真彩色版本更能匹配

  • imagecolorresolve — 取得指定颜色的索引值或有可能得到的最接近的替代值

    本函数可以保证对所请求的颜色返回一个颜色索引,要么是确切值要么是所能得到最接近的替代值。

    如果从文件创建了图像,只有图像中使用了的颜色会被辨析。仅出现在调色板中的颜色不会被辨析。

  • imagecolorresolvealpha — 取得指定颜色 + alpha 的索引值或有可能得到的最接近的替代值

  • imagecolorset — 给指定调色板索引设定颜色

  • imagecolorsforindex — 取得某索引的颜色

    本函数返回一个具有 red,green,blue 和 alpha 的键名的关联数组,包含了指定颜色索引的相应的值。

  • imagecolorstotal — 取得一幅图像的调色板中颜色的数目

  • imagecolortransparent — 将某个颜色定义为透明色

    imagecolortransparent() 将 image 图像中的透明色设定为 color。image 是 imagecreatetruecolor() 返回的图像标识符,color 是 imagecolorallocate() 返回的颜色标识符。

    透明色是图像的一种属性,透明度不是颜色的属性。一旦设定了某个颜色为透明色,图像中之前画为该色的任何区域都成为透明的。

  • imageconvolution — 用系数 div 和 offset 申请一个 3x3 的卷积矩阵

    图像就是一个像素矩阵,该函数经过一个3x3的matrix矩阵,得到新的像素矩阵。

  • imagecopy — 拷贝图像的一部分

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

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

  • imagecopymerge — 拷贝并合并图像的一部分

    两图像将根据 pct 来决定合并程度,其值范围从 0 到 100。当 pct = 0 时,实际上什么也没做,当为 100 时对于调色板图像本函数和 imagecopy() 完全一样,它对真彩色图像实现了 alpha 透明。

    理解为两张图片融合在一起,融合程度看pct透明度,0是完全透明,100是不透明。

  • imagecopymergegray — 用灰度拷贝并合并图像的一部分

    本函数和 imagecopymerge() 完全一样只除了合并时通过在拷贝操作前将目标像素转换为灰度级来保留了原色度。

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

  • imagecopyresized — 拷贝部分图像并调整大小

  • imagecreate — 新建一个基于调色板的图像

    imagecreate() 返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的空白图像。

    推荐使用 imagecreatetruecolor()。

  • imagecreatefrombmp — 由文件或 URL 创建一个新图象。

  • 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 — 新建一个真彩色图像

    建议使用该函数创建空白图像。

  • imagecrop — Crop an image to the given rectangle

    裁剪图像。将图像裁剪到给定的矩形区域并返回结果图像。给定的图像没有被修改

  • imagecropauto — Crop an image automatically using one of the available modes

  • imagedashedline — 画一虚线

    不建议使用本函数。应该用 imagesetstyle() 和 imageline() 的组合替代之。

  • imagedestroy — 销毁一图像

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

  • imageellipse — 画一个椭圆

    类似于imagearc画个圆弧。

  • imagefill — 区域填充

    $im = imagecreatetruecolor(100, 100);
    
    // 将背景设为红色
    $red = imagecolorallocate($im, 255, 0, 0);
    //将左上角的点及其相邻相同的像素点统一填充为蓝色
    $blue = imagecolorallocate($im, 0, 0, 255);
    imagefill($im, 0, 0, $blue);
    
    header('Content-type: image/png');
    imagepng($im);
    imagedestroy($im);
    
  • imagefilledarc — 画一椭圆弧且填充

  • imagefilledellipse — 画一椭圆并填充

  • imagefilledpolygon — 画一多边形并填充

    多边形通过顶点坐标来实现。

  • imagefilledrectangle — 画一矩形并填充

  • imagefilltoborder — 区域填充到指定颜色的边界为止

  • imagefilter — 对图像使用过滤器

    滤镜。

    imagefilter( resource $src_im, int $filtertype[, int $arg1[, int $arg2[, int $arg3]]] ) : bool
    

    filtertype 可以是下列中的一个:

    • IMG_FILTER_NEGATE:将图像中所有颜色反转。
    • IMG_FILTER_GRAYSCALE:将图像转换为灰度的。
    • IMG_FILTER_BRIGHTNESS:改变图像的亮度。用 arg1 设定亮度级别。
    • IMG_FILTER_CONTRAST:改变图像的对比度。用 arg1 设定对比度级别。
    • IMG_FILTER_COLORIZE:与 IMG_FILTER_GRAYSCALE 类似,不过可以指定颜色。用 arg1,arg2 和 arg3 分别指定 red,blue 和 green。每种颜色范围是 0 到 255。
    • IMG_FILTER_EDGEDETECT:用边缘检测来突出图像的边缘。
    • IMG_FILTER_EMBOSS:使图像浮雕化。
    • IMG_FILTER_GAUSSIAN_BLUR:用高斯算法模糊图像。
    • IMG_FILTER_SELECTIVE_BLUR:模糊图像。
    • IMG_FILTER_MEAN_REMOVAL:用平均移除法来达到轮廓效果。
    • IMG_FILTER_SMOOTH:使图像更柔滑。用 arg1 设定柔滑级别。
  • imageflip — Flips an image using a given mode

    使用给定模式翻转图像。

    • IMG_FLIP_HORIZONTAL 水平方向的翻转 Flips the image horizontally.
    • IMG_FLIP_VERTICAL 垂直方向的翻转 Flips the image vertically.
    • IMG_FLIP_BOTH 水平和垂直方向一起 翻转Flips the image both horizontally and vertically.
    $im = imagecreatefromjpeg($filename);
    header("Content-type:".image_type_to_mime_type(IMAGETYPE_JPEG));
    imageflip($im, IMG_FLIP_BOTH);
    
    imagejpeg($im);
    imagedestroy($im);
    
  • imagefontheight — 取得字体高度

  • imagefontwidth — 取得字体宽度

  • imageftbbox — 给出一个使用 FreeType 2 字体的文本框

  • imagefttext — 使用 FreeType 2 字体将文本写入图像

  • imagegammacorrect — 对 GD 图像应用 gamma 修正

  • imagegetclip — 获取当前的剪切矩形。不绘制像素的区域。

  • imageinterlace — 激活或禁止隔行扫描

  • imageistruecolor — 检查图像是否为真彩色图像

    在RGB色彩空间,图像深度与色彩的映射关系主要有真rl]伪bairl] 真彩色(true-color)是指图像中的每个像素值都分成R、G、B三个基色分量,每个基色分量直接决定其基色的强度,这样产生的色彩称为真彩色。

  • imagelayereffect — 设定 alpha 混色标志以使用绑定的 libgd 分层效果

    imagelayereffect( resource $image, int $effect) : bool
    
    • IMG_EFFECT_REPLACE 使用像素替换

    • IMG_EFFECT_OVERLAY 叠加有效果,黑色的背景像素将保持黑色,白色的背景像素将保持白色,但灰色的背景像素将采取前景像素的颜色。

  • imageline — 画一条线段

  • imageloadfont — 载入一新字体

  • imageopenpolygon — Draws an open polygon

  • imagepalettecopy — 将调色板从一幅图像拷贝到另一幅

  • imagepalettetotruecolor — Converts a palette based image to true color

  • imagepolygon — 画一个多边形

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

  • imagerectangle — 画一个矩形

    imagerectangle( resource $image, int $x1, int $y1, int $x2, int $y2, int $col) : bool
    

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

  • imageresolution — 获取或设置图像的分辨率

  • imagerotate — 用给定角度旋转图像

    imagerotate( resource $image, float $angle, int $bgd_color[, int $ignore_transparent = 0] ) : resource
    

    将 image 图像用给定的 angle 角度旋转。bgd_color 指定了旋转后没有覆盖到的部分的颜色,ignore_transparent如果被设为非零值,则透明色会被忽略(否则会被保留)。

    注意:旋转的中心是图像的中心,旋转后的图像会按比例缩小以适合目标图像的大小——边缘不会被剪去。

    $image = imagecreatefromjpeg($filename);
    $rImage = imagerotate($image, 45, 0);
    header("Content-type:".image_type_to_mime_type(IMAGETYPE_JPEG));
    imagejpeg($rImage);
    imagedestroy($image);
    imagedestroy($rImage);
    
  • imagesavealpha — 设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息(与单一透明色相反)

  • imagescale — 使用给定的新宽度和高度缩放图像

    imagescale( resource $image, int $new_width[, int $new_height = -1[, int $mode = IMG_BILINEAR_FIXED]] ) : resource|false
    

    注意:imagescale不会修改原图片,而是返回新的图片资源。

  • imagesetbrush — 设定画线用的画笔图像

    当用特殊的颜色 IMG_COLOR_BRUSHED 或 IMG_COLOR_STYLEDBRUSHED 绘画时,imagesetbrush() 设定了所有画线的函数(例如 imageline() 和 imagepolygon())所使用的画笔图像。

    注意:使用完画笔图像后不需要采取什么特殊动作。但如果销毁了画笔图像,在设定一个新的画笔图像之前不能使用 IMG_COLOR_BRUSHED 或 IMG_COLOR_STYLEDBRUSHED

    参考imagesetstyle() 更多使用。

  • imagesetclip — Set the clipping rectangle

  • imagesetinterpolation — Set the interpolation method

  • imagesetpixel — 画一个单一像素

  • imagesetstyle — 设定画线的风格

    imagesetstyle() 设定所有画线的函数(例如 imageline() 和 imagepolygon())在使用特殊颜色 IMG_COLOR_STYLED 或者用 IMG_COLOR_STYLEDBRUSHED 画一行图像时所使用的风格。

  • imagesetthickness — 设定画线的宽度

  • imagesettile — 设定用于填充的贴图

  • imagestring — 水平地画一行字符串

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

  • imagestringup — 垂直地画一行字符串

  • imagesx — 取得图像宽度

    不要记错了,虽然是x,但不是获取x坐标,而是宽度,按正常命名应该是imagesw。

  • imagesy — 取得图像高度

  • imagetruecolortopalette — 将真彩色图像转换为调色板图像

  • imagettfbbox — 取得使用 TrueType 字体的文本的范围

  • imagettftext — 用 TrueType 字体向图像写入文本

  • imagetypes — 返回当前 PHP 版本所支持的图像类型

  • iptcembed — 将二进制 IPTC 数据嵌入到一幅 JPEG 图像中

  • iptcparse — 将二进制 IPTC 块解析为单个标记

  • jpeg2wbmp — 将 JPEG 图像文件转换为 WBMP 图像文件

  • png2wbmp — 将 PNG 图像文件转换为 WBMP 图像文件

  • imagewbmp — 以 WBMP 格式将图像输出到浏览器或文件

  • imagewebp — 将 WebP 格式的图像输出到浏览器或文件

  • imagexbm — 将 XBM 图像输出到浏览器或文件

  • imagebmp — Output a BMP image to browser or file

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

  • imagegd2 — 将 GD2 图像输出到浏览器或文件

  • imagegd — 将 GD 图像输出到浏览器或文件

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

  • imagepng — 以 PNG 格式将图像输出到浏览器或文件

ImageMagick

Imagick 是用 ImageMagic API 来创建和修改图像的PHP官方扩展。

ImageMagick® 是用来创建,编辑,合并位图图像的一套组件。它能够用于读取,转换,写入多种不同格式的图像。包含 DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, 和 TIFF。

ImageMagick支持更多富文本内容的编辑,除了图片还涉及PDF等,特别是PDF、文字、图片的相结合处理方面。

注意: 官方扩展名称是imagick