You can use this function in combination with imagecreatefromstring() to clone the gd resource with minimum fuss (no writing to tmp file):
<?php
function cloneGd($gd)
{
ob_start();
imagegd2($gd);
return imagecreatefromstring(ob_get_clean());
}
?>
imagegd2
(PHP 4 >= 4.0.7, PHP 5)
imagegd2 — Envia uma imagem GD2
Descrição
bool imagegd2
( resource
$image
[, string $filename
[, int $chunk_size
[, int $type
]]] )imagegd2() envia uma imagem GD2 para o browser ou um arquivo.
O parâmetro opcional type pode ser
IMG_GD2_RAW ou IMG_GD2_COMPRESSED.
O padrão é IMG_GD2_RAW.
Nota:
Os parâmetros opcionais
chunk_sizeetypetornaram-se disponíveis no PHP 4.3.2.
Nick ¶
1 year ago
mark at teckis dot com ¶
10 years ago
yes, the gd2 file format does improve the speed of image creations as the data-setup is designed to be native for the GD function - ie, the image doesn't have to be converted to a usable format prior to processing.
you may also note that the newer gd2 format creates much smaller size files than the older imagegd function, certainly for images involving chunks of single colours anyway. you'll probably find this function most useful for saving overlay images or background images used in larger image creation scripts.
to read a ping or jpeg image (.png / .jpg) and save a .gd2 version to server...
$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');
}
}
should save a copy with the same filename and directory using extension .gd2 - which can then be nicely and swiftly read using either imagecreatefromgd2 or imagecreatefromgd2part
