IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

PHP图像处理组件GD的常用函数总结――图像创建和销毁相关函数

本机暂存

前一篇,我们讲了一些GD库的基本函数,这篇讲一下创建图像相关的函数。图像创建和销毁函数主要有以下几个:
imagecreatetruecolor
创建一个真彩的空白图像。
imagecreatefromgif
从GIF文件或URL读取并新建一图像
imagecreatefromjpeg
从JPG文件或URL读取并新建一图像
imagecreatefrompng
从PNG文件或URL读取并新建一图像
imagecreatefromwbmp
从WBMP文件或URL读取并新建一图像
imagecreatefromstring
从字符串中的图像流新建一图像
imagedestroy
销毁一图像

说明一下,这里所说的创建和销毁图像,都是在内存中建立或清除图像资源,而不是创建或删除图像文件。

接下来就具体讲述这些函数了。

imagecreatetruecolor
新建一个真彩色图像

原型:resource imagecreatetruecolor ( int x_size, int y_size )

返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的黑色图像。

例子:
<?php
header("Content-type: image/png");
$im = @imagecreatetruecolor(50, 100)
      or die("Cannot Initialize new GD image stream");
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  "A Simple Text String", $text_color);
imagepng($im);
imagedestroy($im);
?>

imagecreatefromgif
从 GIF 文件或 URL 新建一图像

原型:resource imagecreatefromgif ( string filename )

返回一图像标识符,代表了从给定的文件名取得的图像。在失败时返回一个空字符串,并且输出一条错误信息。
这种结果很不方便我们的调试,为减轻调试工作下面的例子会产生一个错误 GIF:
例子:处理创建过程中的错误
<?php
function LoadGif($imgname)
{
    $im = @imagecreatefromgif($imgname); /* Attempt to open */
    if(!$im) { /* See if it failed */
        $im = imagecreatetruecolor(150, 30); /* Create a blank image */
        $bgc = imagecolorallocate($im, 255, 255, 255);
        $tc = imagecolorallocate($im, 0, 0, 0);
        imagefilledrectangle($im, 0, 0, 150, 30, $bgc);
        /* Output an errmsg */
        imagestring($im, 1, 5, 5, "Error loading $imgname", $tc);
    }
    return $im;
}
?>
如果“fopen wrappers”已经被激活,则在本函数中可以把 URL 作为文件名来使用。

其他几个从图像文件创建图像的函数和imagecreatefromgif的参数是一样的,这里不再赘述。
imagecreatefromjpeg 从 JPEG 文件或 URL 新建一图像
imagecreatefrompng 从 PNG 文件或 URL 新建一图像
imagecreatefromwbmp 从 WBMP 文件或 URL 新建一图像

imagecreatefromstring
这个函数比较特殊,是从字符串中的图像流新建一图像,这个图像流一般是一个图像文件用二进制读取然后通过base64编码,转化成一个字符串的,本函数可以从这样的一个字符串中途去一个图像。

原型:resource imagecreatefromstring ( string image )

返回一个图像标识符,其表达了从给定字符串得来的图像。图像格式将自动检测,只要 PHP 支持:JPEG,PNG,GIF,WBMP 和 GD2。成功则返回图像资源,如果图像格式不支持,数据不是认可的格式,或者图像已损坏则返回 FALSE。
例子:
<?php
$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
       . 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
       . 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
       . '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$data = base64_decode($data);

$im = imagecreatefromstring($data);
if ($im !== false) {
    header('Content-Type: image/png');
    imagepng($im);
}
else {
    echo 'An error occured.';
}
?>

imagedestroy
销毁一图像

原型:bool imagedestroy ( resource image )

释放与 image 关联的内存。image 是由图像创建函数返回的图像标识符。

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 使用gettext来支持PHP的多语言 (累计阅读 39,271)
  2. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,165)
  3. Paypal接口详细代码(PHP版,非API接口) (累计阅读 19,410)
  4. 我的PHP,Python和Ruby之路 (累计阅读 13,150)
  5. include(“./file.php”)和include(“file.php”)区别 (累计阅读 12,792)
  6. 15个最好的免费开源电子商务平台 (累计阅读 12,542)
  7. Redis消息队列的若干实现方式 (累计阅读 12,088)
  8. 到底什么是MVC? (累计阅读 11,873)
  9. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,714)
  10. Rolling cURL: PHP并发最佳实践 (累计阅读 11,488)