MrZyb Always in fear of one's own ignorance

GD库是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片,也可以给图片加水印。

  • 主要用途:

    • 在网站上GD库通常用来生成缩略图,或者用来对图片加水印,或者用来生成汉字验证码,或者对网站数据生成报表等。在PHP处理图像,可使用GD库,而GD库开始时是支持GIF的,但由于GIF使用了有版权争议的LZW算法,会引起法律问题,于是从 GD 库 1.6 版起所有的 GIF 支持都移除了,但是又在 GD 库 2.0.28 版起又加了回来。如果使用二者之间版本的 GD 库时 GIF 相关函数不可用。
  • 安装

    • Windows下的安装 : 在 php.ini 中将 “;extension=php_gd2.dll” 一行,把extension前面的分号去掉,重启服务器,在php脚本中使用 phpinfo(); ,然后再页面查看是否有GD的拓展,如下:

PHP_GD_extendsion

  • Linux下的安装 : Ubuntu下终端运行 apt install php-gd ,CentOS下终端运行 yum install php-gd ,然后可以在终端运行指令:php -m,查看php已安装的拓展,如下:

image

  • 以下是一些个人认为比较常用的函数:
    • imagecolorallocate( resource $image , int $red , int $green , int $blue):为一幅图像分配颜色
      $im = imagecreate('example.jpg', 100, 100);
      $background = imagecolorallocate($im, 255, 0, 0);
    • imagettftext( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text ):使用 TrueType 字体将 指定的 text 写入图像
      $im =  imagecreate('example.jpg', 100, 100);
      $text = 'Mr.Zyb';
      $font = 'arial.ttf';
      $grey = imagecolorallocate($im, 128, 128, 128);
      imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);
    • imagecreate( int $x_size , int $y_size )imagecreatefromjpegimagecreatefrompngimagecreatefromgif:创建一个新图象。
    • imagejpeg ( resource $image [, string $filename [, int $quality ]] ):从 image 图像以 filename 为文件名创建一个 JPEG 图像。(相同的还有imagepngimagegif)。
    • imagettfbbox ( float $size , float $angle , string $fontfile , string $text ):计算并返回一个包围着 TrueType 文本范围的虚拟方框的像素大小。
    • imagesx($image)imagesy($image):取得图像宽度和高度
    • 另外获取图片宽度和高度的函数:getimagesize( string $filename [, array &$imageinfo ] )
      list($x, $y) = getimagesize('example.jpg');
    • 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 的位置上。
    • imagecopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct ):将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。两图像将根据 pct 来决定合并程度,其值范围从 0 到 100。当 pct = 0 时,实际上什么也没做,当为 100 时对于调色板图像本函数和 imagecopy() 完全一样,它对真彩色图像实现了 alpha 透明。
    • 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 ):将一幅图像中的一块正方形区域拷贝到另一个图像中,平滑地插入像素值,因此,尤其是,减小了图像的大小而仍然保持了极大的清晰度。
    • imagecopyresized ( 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 ):将一幅图像中的一块矩形区域拷贝到另一个图像中。dst_image 和 src_image 分别是目标图像和源图像的标识符。
0.003473s