IT技术博客大学习 共学习 共进步

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. PHP图像处理组件GD的常用函数总结――基本信息函数 (阅读 3,882)
  2. 网络图像优化总结 (阅读 3,283)
  3. PHP任意图像裁剪成固定大小 (阅读 3,164)
  4. PHP图像处理组件GD的常用函数总结――图像转换相关函数 (阅读 3,063)
  5. PHP图像处理组件GD的常用函数总结――图像输出相关函数 (阅读 2,883)
  6. 如何在终端显示图像缩略图 (阅读 2,623)
  7. PHP图像处理组件GD的常用函数总结――概述 (阅读 2,581)