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 — Génère une image au format GD2, vers le navigateur ou un fichier
Description
Génère une image au format GD2, vers le fichier filename.
Liste de paramètres
- image
-
Une ressource d'image, retournée par une des fonctions de création d'images, comme imagecreatetruecolor().
- filename
-
Le chemin d'enregistrement du fichier. S'il n'est définit pas ou vaut NULL, le flux d'image brute sera affiché directement.
- chunk_size
-
Taille de la pièce.
- type
-
Soit IMG_GD2_RAW, soit IMG_GD2_COMPRESSED. Par défaut, vaut IMG_GD2_RAW.
Valeurs de retour
Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.
Exemples
Exemple #1 Affichage d'une image GD2
<?php
// Création d'une image vide et ajout d'un texte
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, "Un texte simple", $text_color);
// Affichage de l'image
imagegd2($im);
// Libération de la mémoire
imagedestroy($im);
?>
Exemple #2 Sauvegarde d'une image GD2
<?php
// Création d'une image vide et ajout d'un texte
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, "Un texte simple", $text_color);
// Sauvegarde de l'image GD2
// Le format de fichier pour les images GD2 est .gd2, voir http://www.libgd.org/GdFileFormats
imagegd2($im, 'simple.gd2');
// Libération de la mémoire
imagedestroy($im);
?>
Notes
Note: Cette fonction requiert la bibliothèque GD 2.0.1 ou supérieure (2.0.28 ou supérieure est recommandée).
Note:
Le format GD2 est communément utilisé pour charger rapidement les parties d'une image. Notez que le format GD2 est uniquement utilisable dans les applications compatibles GD2.
Historique
| Version | Description |
|---|---|
| 4.3.2 | Les paramètres chunk_size et type ont été ajoutés. |
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
