PHP
downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

imagegrabscreen> <imagegd
Last updated: Fri, 03 Jul 2009

view this page in

imagegif

(PHP 4, PHP 5)

imagegifEnvoie une image GIF vers un navigateur ou un fichier

Description

bool imagegif ( resource $image [, string $filename ] )

imagegif() crée un fichier image GIF avec le nom filename d'après l'image image . L'argument image est un identifiant valide retourné par la fonction imagecreate() ou les fonctions imagecreatefrom*.

Le format de l'image sera GIF87a, à moins que l'image n'ait une couleur transparente (mise en place grâce à la fonction imagecolortransparent())), ce qui fera qu'elle sera au format GIF89a.

Liste de paramètres

image

Une ressource d'image, retourné par une des fonctions de création d'images, comme imagecreatetruecolor().

filename

Le chemin vers le fichier de sauvegarde. Si le flux de l'image brute n'est pas fourni, il sera affiché directement.

Valeurs de retour

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemples

Exemple #1 Affichage d'une image en utilisant imagegif()

<?php
// Création d'une image
$im imagecreatetruecolor(100100);

// Définit l'arrière-plan en blanc
imagefilledrectangle($im0099990xFFFFFF);

// Dessine un texte dans l'image
imagestring($im34020'GD Library'0xFFBA00);

// Affiche l'image sur le navigateur
header('Content-type: image/gif');

imagegif($im);
imagedestroy($im);
?>

Exemple #2 Conversion d'une image PNG en GIF, en utilisant imagegif()

<?php
// Chargement de l'image PNG
$png imagecreatefrompng('./php.png');

// Sauvegarde de l'image en GIF
imagegif($png'./php.gif');

// Libération de la mémoire
imagedestroy($png);

// C'est fait !
echo 'Convertion avec succès de l'image PNG en GIF !';
?>

Notes

Note: Étant donné que toutes les fonctions GIF ont été supprimées de la bibliothèque GD version 1.6, cette fonction ne sera pas accessible si vous avez cette version de la bibliothèque. Le support du format GIF sera de retour milieu 2004 dans la bibliothèque GD. Pour plus d'informations, voir le site du » projet GD.
Le code suivant vous permet d'écrire des scripts PHP plus portables : le type de GD est automatiquement détecté. Il remplace la séquence Header("Content-type: image/gif"); ImageGif($im); par un code plus souple :

<?php
// Création d'une image
$im imagecreatetruecolor(100100);

// On fait quelques opérations sur l'image ici...

// Gestion de l'affichage
if(function_exists('imagegif'))
{
    
// Pour GIF
    
header('Content-type: image/gif');

    
imagegif($im);
}
elseif(
function_exists('imagejpeg'))
{
    
// Pour JPEG
    
header('Content-type: image/jpeg');

    
imagejpeg($imNULL100);
}
elseif(
function_exists('imagepng'))
{
    
// Pour PNG
    
header('Content-type: image/png');

    
imagepng($im);
}
elseif(
function_exists('imagewbmp'))
{
    
// Pour WBMP
    
header('Content-type: image/vnd.wap.wbmp');

    
imagewbmp($im);
}
else
{
    
imagedestroy($im);

    die(
'Aucun support sur ce serveur PHP n\'a été trouvé');
}

// Si un support a été trouvé pour un de ces formats,
// nous libérons la mémoire
if($im)
{
    
imagedestroy($im);
}
?>


Note: Depuis les versions 4.0.2 de PHP, vous pouvez utiliser la fonction imagetypes() au lieu de function_exists() pour vérifier la présence des différents formats d'images supportés.:

<?php
if(imagetypes() & IMG_GIF)
{
    
header('Content-type: image/gif');
    
imagegif($im);
}
elseif(
imagetypes() & IMG_JPG)
{
    
/* ... etc. */
}
?>


Voir aussi

  • imagepng() - Envoie une image PNG vers un navigateur ou un fichier
  • imagewbmp() - Affiche une image WBMP
  • imagejpeg() - Envoie une image JPEG vers un navigateur ou un fichier
  • imagetypes() - Retourne les types d'images supportés par la version courante de PHP



imagegrabscreen> <imagegd
Last updated: Fri, 03 Jul 2009
 
add a note add a note User Contributed Notes
imagegif
stefan at colulus dot com
30-May-2008 06:18
I worked out a script that allows the transfer of alphanumeric data to be placed on an image. The HTML feature is img src and the php feature is imagettftext. This simple code will increment from 1 to 3 on images.

code:

<?php
//ImageCall.php -- This script will call a script to produce the image.
for($next = 1;$next < 4; $next++){
print
"Image $next:<br>";
print
"<img src = 'Image.php?\$text=$next'>";
print
"<br><br>";
}
?>

<?php
//Image.php -- This script creates a square image and places the text on it.

// image size and color
$im = ImageCreate(77,77);
$color1 = ImageColorAllocate($im,0x66,0xCC,0x00);
$color2 = ImageColorAllocate($im,0x33,0x66,0x00);
$color3 = ImageColorAllocate($im,0x00,0x99,0x00);
$color4 = ImageColorAllocate($im,0x3D,0x3D,0x3D);

// image creation
ImageFilledRectangle($im,1,1,76,76,$color1);
ImageFilledpolygon($im, array (76,1,1,76,76,76),3,$color2);
ImageFilledRectangle($im,5,5,72,72,$color3);

// determine numeric center of image
$size = ImageTTFBBox(45,0,'impact',$_GET['$text']);
$X = (77 - (abs($size[2]- $size[0])))/2;
$Y = ((77 - (abs($size[5] - $size[3])))/2 + (abs($size[5] - $size[3])));

//places numeric information on image
ImageTTFText($im,45,0,($X-1),$Y,$color4,'impact',$_GET['$text']);

//returns completed image to calling script
Header('Content-Type: image/png');
Imagegif($im);

?>
mogmios at gmail dot com
19-May-2008 10:06
Simple function for converting a PNG to a GIF. Seems to work for me.

<?php
function png2gif ( $image_in, $image_out ) {
 
$img = imagecreatefrompng ( $image_in );
 
$trans_color = imagecolortransparent ( $img );
 
$trans_index = imagecolorallocate ( $img, $trans_color['red'], $trans_color['green'], $trans_color['blue'] );
 
imagecolortransparent ( $img, $trans_index );
 
imagegif ( $img, $image_out );
 return
True;
}
?>
alan hogan dot com slash contact
12-Nov-2007 10:47
Note that you *can* save with a transparent color **and dither** using GD2.
For a useful example, see the png-to-gif function in my coment here:
http://www.php.net/manual/en/function.imagecolorat.php
rokfaith at gmail dot com
06-Jul-2006 10:34
to create an animated gif with gifsicle, but without storing temporary images on disk:

<?php
$cmd
= 'gifsicle --loop -O1 --multifile --delay 25 - > '.$outfile;
$desc = array(0 => array("pipe", "r"),1 => array("pipe", "w"),2 => array("pipe", "w"));
$proc = proc_open($cmd, $desc, $pipes);
if (!
is_resource($proc)) {
  die(
'Unable to start gifsicle');
}
for (
$frame=0; $frame<$total_frames; $frame++) {
 
$image = RenderFrame($frame);
 
ob_start();
 
imagegif($image);
 
fwrite($pipes[0], ob_get_contents());
 
ob_end_clean();
 
imagedestroy($image);
}
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($proc);
?>

just define $outfile and RenderFrame(), and that's it.
Leigh Purdie
04-Jul-2005 12:17
Simple animated-gif hack (requires ImageMagick):

<html><body>
<?php
        $icount
=0;
        for(
$count=0;$count<40;$count++) {
               
$im=imagecreate(200,200);
               
imagecolorallocate($im,0,0,255);
               
$white=imagecolorallocate($im,255,255,255);
               
imagerectangle($im,$count,$count,200-$count,200-$count,$white);
               
$icount++;
               
$tcount=sprintf("%04d",$icount);
               
imagegif($im,"/tmp/test-$tcount.gif");
               
imagedestroy($im);
        }
       
exec("/usr/bin/convert -delay 2 -loop 10 /tmp/test*.gif /var/www/html/Tests/Test-Anim.gif");
?>
<img src="/Tests/Test-Anim.gif">
</body>
</html>
Lauri Harpf
23-Jun-2005 04:25
Using <IMG SRC="image.php"> to dynamically generate images is a bit problematic regarding cache. Unless caching is activated, IE seems to get confused about the type of the image when attempting to save it. A .GIF created in the above way causes the browser to suggest saving the image with .BMP, not .GIF.

A solution is to activate cache with session_cache_limiter('public'); in "image.php", after which IE will correctly save as .GIF. If you do not want the cache to block any changes in the dynamic image, make sure that the SRC keeps changing with every reload. Something like "image.php/" . mt_rand(1,100000) . ".gif" seems to work well.

Might be trivial to some, but I spent a couple of hours figuring out why IE always wants to save my dynamic .GIF's as .BMP's.
jemore at nospam dot m6net dot fr
22-Nov-2003 06:24
If you open a truecolor image (with imageCreateFromPng for example), and you save it directly with imagegif, you can have a 500 internal server error. You must use imageTrueColorToPalette to reduce to 256 colors before saving the image in GIF format.
polone at townnews dot com
03-Apr-2002 07:40
read also RFC2557: http://www.ietf.org/rfc/rfc2557.txt
For handling inline images in email.
----


I've been playing around with the "data" URL scheme as proposed by RFC 2397 which states how to perform inline, bas64 encoded images. A number of browsers support this format from some of my tests and would be an interesting way of removing overhead from multiple HTTP connections. Basically, the IMG tag would be:

<IMG SRC="/-/data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH hhx4dbgYKAAA7" ALT="Larry">

Something like that. Note also that I start the URI with "/-/" before the rest of the data scheme spec. If you don't start it with this, it won't work in a lot of the different browsers I tested (such as IE). Note this is useful for very small images only (as most browsers appear to have a limitation on the size of HTML element data of 1024). Browsers where this syntax worked that I tested are the following:

IE 6.x (windows)
Mozilla 0.97+ (linux)
Opera 5, 6 (windows)
Netscape 4.7+ (mac, windows)
IE 5 (macintosh)

This should work for other image types as well, such as PNG. JPEG files aren't really suggested (usually, these files are too large). BTW - there is no advantage to this method if the image will appear more than ONCE in the page because you will be transmitting the same data multiple times as opposed to just once (most browsers realize that already downloaded data that has multiple references only requires one HTTP call).

Consider using this method if you want to make a single PHP program that outputs both text and an image AND you want to make only on HTTP call. Cheers.
kremlin at home dot com
27-Feb-2001 05:45
Animated GIFs as well as transparent GIFs qualify as GIF89a's and you should use ImageColorTransparent().
david at hooshla dot com
29-Apr-2000 02:45
This is how you load and display an image file:

<?php
Header
("Content-Type: image/gif");
$fn=fopen("./imagefile.gif","r");
fpassthru($fn);
?>

Note that there are no new-lines in the content type header.

imagegrabscreen> <imagegd
Last updated: Fri, 03 Jul 2009
 
 
show source | credits | sitemap | contact | advertising | mirror sites