您可以将此函数与 imagecreatefromstring() 结合使用,以最少的麻烦克隆 gd 资源(无需写入临时文件)
<?php
function cloneGd($gd)
{
ob_start();
imagegd2($gd);
return imagecreatefromstring(ob_get_clean());
}
?>
(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)
imagegd2 — 将 GD2 图像输出到浏览器或文件
$image
,$file
= null
,$chunk_size
= 128,$mode
= IMG_GD2_RAW
将 GD2 图像输出到给定的 file
。
image
一个 GdImage 对象,由图像创建函数(如 imagecreatetruecolor())返回。
file
保存文件的路径或打开的流资源(此函数返回后会自动关闭)。如果未设置或为 null
,则会直接输出原始图像流。
chunk_size
块大小。
mode
示例 #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 的专有图像格式。它们应该被认为是 *已过时* 的,并且只应用于开发和测试目的。
您可以将此函数与 imagecreatefromstring() 结合使用,以最少的麻烦克隆 gd 资源(无需写入临时文件)
<?php
function cloneGd($gd)
{
ob_start();
imagegd2($gd);
return imagecreatefromstring(ob_get_clean());
}
?>
是的,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函数快速读取。