PHP 日本大会 2024

imagegd2

(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)

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

描述

imagegd2(
    GdImage $image,
    ?string $file = null,
    int $chunk_size = 128,
    int $mode = IMG_GD2_RAW
): bool

将 GD2 图像输出到给定的 file

参数

image

一个 GdImage 对象,由图像创建函数(如 imagecreatetruecolor())返回。

file

保存文件的路径或打开的流资源(此函数返回后会自动关闭)。如果未设置或为 null,则会直接输出原始图像流。

chunk_size

块大小。

mode

IMG_GD2_RAWIMG_GD2_COMPRESSED。默认为 IMG_GD2_RAW

返回值

成功时返回 true,失败时返回 false

警告

但是,如果 libgd 无法输出图像,此函数将返回 true

变更日志

版本 描述
8.0.3 file 现在可以为空。
8.0.0 image 现在期望一个 GdImage 实例;以前,期望一个有效的 gd resource

示例

示例 #1 输出 GD2 图像

<?php
// 创建一个空白图像并添加一些文本
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, "A Simple Text String", $text_color);

// 输出图像
imagegd2($im);

// 释放内存
imagedestroy($im);
?>

示例 #2 保存 GD2 图像

<?php
// 创建一个空白图像并添加一些文本
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, "A Simple Text String", $text_color);

// 保存 gd2 图像
// GD2 图像的文件格式为 .gd2,参见 http://www.libgd.org/GdFileFormats
imagegd2($im, 'simple.gd2');

// 释放内存
imagedestroy($im);
?>

备注

注意:

GD2 格式通常用于允许快速加载图像的部分。请注意,GD2 格式仅可在兼容 GD2 的应用程序中使用。

警告

GD 和 GD2 图像格式是 libgd 的专有图像格式。它们应该被认为是 *已过时* 的,并且只应用于开发和测试目的。

参见

  • imagegd() - 将 GD 图像输出到浏览器或文件
添加备注

用户贡献的备注 2 条备注

2
Nick
13 年前
您可以将此函数与 imagecreatefromstring() 结合使用,以最少的麻烦克隆 gd 资源(无需写入临时文件)

<?php
function cloneGd($gd)
{
ob_start();
imagegd2($gd);
return
imagecreatefromstring(ob_get_clean());
}
?>
0
mark at teckis dot com
21 年前
是的,gd2 文件格式确实提高了图像创建速度,因为数据设置设计为 GD 函数的原生格式 - 即,图像在处理之前无需转换为可用格式。

您可能还会注意到,较新的 gd2 格式创建的文件大小比旧的 imagegd 函数小得多,当然对于包含大块单一颜色的图像更是如此。您可能会发现此函数最适合保存用于较大图像创建脚本中的叠加图像或背景图像。

读取 ping 或 jpeg 图像(.png / .jpg)并将 .gd2 版本保存到服务器……

$img = $_GET['img'];
if(file_exists($img))
{
$dim = getimagesize($img);
$cr = ($dim[2] < 4) ? ($dim[2] < 3) ? ($dim[2] < 2) ? NULL : imagecreatefromjpeg($img) : imagecreatefrompng($img) : NULL;
if($cr !== NULL)
{
imagegd2($cr,substr($img,0,strrpos($img,'.')).'.gd2');
}
}

应保存一个具有相同文件名和目录的副本,使用扩展名“.gd2”——然后可以使用imagecreatefromgd2或imagecreatefromgd2part函数快速读取。
To Top