Building on Ashley's example, here's an example of some code that grabs an existing image file and outputs an html img tag with the contents. I found it useful because I needed to not broadcast the filenames.
<?php
$file = 'images/01.png';
$image = imagecreatefrompng($file);
imagealphablending($image, false);
imagesavealpha($image, true);
// start buffering
ob_start();
imagepng($image);
$contents = ob_get_contents();
ob_end_clean();
echo "<img src='data:image/png;base64,".base64_encode($contents)."' />";
imagedestroy($image);
?>
Traitement des images et GD
- Introduction
- Installation/Configuration
- Constantes pré-définies
- Exemples
- Fonctions GD et images
- gd_info — Retourne des informations à propos de la bibliothèque GD installée
- getimagesize — Retourne la taille d'une image
- image_type_to_extension — Retourne l'extension du fichier pour le type d'image
- image_type_to_mime_type — Lit le Mime-Type d'un type d'image
- image2wbmp — Crée une image WBMP
- imagealphablending — Modifie le mode de blending d'une image
- imageantialias — Utiliser ou non les fonctions d'antialias
- imagearc — Dessine une ellipse partielle
- imagechar — Dessine un caractère horizontalement
- imagecharup — Dessine un caractère verticalement
- imagecolorallocate — Alloue une couleur pour une image
- imagecolorallocatealpha — Alloue une couleur à une image
- imagecolorat — Retourne l'index de la couleur d'un pixel donné
- imagecolorclosest — Retourne l'index de la couleur la plus proche d'une couleur donnée
- imagecolorclosestalpha — Retourne la couleur la plus proche, en tenant compte du canal alpha
- imagecolorclosesthwb — Lit l'index de la couleur spécifiée avec sa teinte, blanc et noir
- imagecolordeallocate — Supprime une couleur d'une image
- imagecolorexact — Retourne l'index de la couleur donnée
- imagecolorexactalpha — Retourne l'index d'une couleur avec son canal alpha
- imagecolormatch — Fait correspondre un peu plus les couleurs de la version palette d'une image aux couleurs de sa version truecolor
- imagecolorresolve — Retourne l'index de la couleur donnée, ou la plus proche possible
- imagecolorresolvealpha — Retourne un index de couleur ou son alternative la plus proche, y compris le canal alpha
- imagecolorset — Change la couleur dans une palette à l'index donné
- imagecolorsforindex — Retourne la couleur associée à un index
- imagecolorstotal — Calcule le nombre de couleurs d'une palette
- imagecolortransparent — Définit la couleur transparente
- imageconvolution — Applique une matrice de la convolution 3x3, en utilisant le coefficient et l'excentrage
- imagecopy — Copie une partie d'une image
- imagecopymerge — Copie et fusionne une partie d'une image
- imagecopymergegray — Copie et fusionne une partie d'une image en niveaux de gris
- imagecopyresampled — Copie, redimensionne, rééchantillonne une image
- imagecopyresized — Copie et redimensionne une partie d'une image
- imagecreate — Crée une nouvelle image à palette
- imagecreatefromgd2 — Crée une nouvelle image à partir d'un fichier GD2 ou d'une URL
- imagecreatefromgd2part — Crée une nouvelle image à partir d'une partie de fichier GD2 ou d'une URL
- imagecreatefromgd — Crée une nouvelle image à partir d'un fichier GD ou d'une URL
- imagecreatefromgif — Crée une nouvelle image à partir d'un fichier ou d'une URL
- imagecreatefromjpeg — Crée une nouvelle image à partir d'un fichier ou d'une URL
- imagecreatefrompng — Crée une nouvelle image à partir d'un fichier ou d'une URL
- imagecreatefromstring — Crée une image à partir d'une chaîne
- imagecreatefromwbmp — Crée une nouvelle image à partir d'un fichier ou d'une URL
- imagecreatefromxbm — Crée une nouvelle image à partir d'un fichier ou d'une URL
- imagecreatefromxpm — Crée une nouvelle image à partir d'un fichier ou d'une URL
- imagecreatetruecolor — Crée une nouvelle image en couleurs vraies
- imagedashedline — Dessine une ligne pointillée
- imagedestroy — Détruit une image
- imageellipse — Dessine une ellipse
- imagefill — Remplissage
- imagefilledarc — Dessine un arc partiel et le remplit
- imagefilledellipse — Dessine une ellipse pleine
- imagefilledpolygon — Dessine un polygone rempli
- imagefilledrectangle — Dessine un rectangle rempli
- imagefilltoborder — Remplit une région avec une couleur spécifique
- imagefilter — Applique un filtre à une image
- imagefontheight — Retourne la hauteur de la police
- imagefontwidth — Retourne la largeur de la police
- imageftbbox — Calcule le rectangle d'encadrement pour un texte, en utilisant la police courante et freetype2
- imagefttext — Écrit du texte dans une image avec la police courante FreeType 2
- imagegammacorrect — Applique une correction gamma à l'image GD
- imagegd2 — Génère une image au format GD2, vers le navigateur ou un fichier
- imagegd — Génère une image au format GD, vers le navigateur ou un fichier
- imagegif — Envoie une image GIF vers un navigateur ou un fichier
- imagegrabscreen — Capture l'écran complet
- imagegrabwindow — Capture une fenêtre
- imageinterlace — Active ou désactive l'entrelacement
- imageistruecolor — Détermine si une image est une image truecolor
- imagejpeg — Envoie une image JPEG vers un navigateur ou un fichier
- imagelayereffect — Active l'option d'alpha blending, pour utiliser les effets de libgd
- imageline — Dessine une ligne
- imageloadfont — Charge une nouvelle police
- imagepalettecopy — Copie la palette d'une image à l'autre
- imagepng — Envoie une image PNG vers un navigateur ou un fichier
- imagepolygon — Dessine un polygone
- imagepsbbox — Retourne le rectangle entourant un texte et dessiné avec une police PostScript Type1
- imagepsencodefont — Change le codage vectoriel d'un caractère dans une police
- imagepsextendfont — Étend ou condense une police de caractères
- imagepsfreefont — Libère la mémoire occupée par une police PostScript Type 1
- imagepsloadfont — Charge une police PostScript Type 1 depuis un fichier
- imagepsslantfont — Incline une police de caractères PostScript
- imagepstext — Dessine un texte sur une image avec une police PostScript Type1
- imagerectangle — Dessine un rectangle
- imagerotate — Fait tourner une image d'un angle
- imagesavealpha — Configure l'enregistrement des informations complètes du canal alpha lors de sauvegardes d'images PNG
- imagesetbrush — Modifie la brosse pour le dessin des lignes
- imagesetpixel — Dessine un pixel
- imagesetstyle — Configure le style pour le dessin des lignes
- imagesetthickness — Modifie l'épaisseur d'un trait
- imagesettile — Modifie l'image utilisée pour le carrelage
- imagestring — Dessine une chaîne horizontale
- imagestringup — Dessine une chaîne verticale
- imagesx — Retourne la largeur d'une image
- imagesy — Retourne la hauteur de l'image
- imagetruecolortopalette — Convertit une image en couleurs vraies en image à palette
- imagettfbbox — Retourne le rectangle entourant un texte et dessiné avec une police TrueType
- imagettftext — Dessine un texte avec une police TrueType
- imagetypes — Retourne les types d'images supportés par la version courante de PHP
- imagewbmp — Affiche une image WBMP
- imagexbm — Génère une image au format XBM
- iptcembed — Intègre des données binaires IPTC dans une image JPEG
- iptcparse — Analyse un bloc binaire IPTC et recherche les balises simples
- jpeg2wbmp — Convertit une image JPEG en image WBMP
- png2wbmp — Convertit une image PNG en image WBMP
GD
jordan at jkdesign dot org
07-Sep-2009 10:09
07-Sep-2009 10:09
scurvysquid at yahoo dot com
04-May-2009 07:08
04-May-2009 07:08
to address Thomas' note about exif data, exif is only valid for .tiff and .jpg files. As always, it's up to the individual to make the call but I personally would prefer to create an abstraction layer to work for all images, and relying on exif data means you need to limit your allowed image types. I've heard some great things about the GD library and found them to all be true in my own use of it, losing the nominally useful data specific to jpegs and pngs is not a sufficient reason alone to convince me to use imagemagick instead.
Thomas
10-Dec-2008 10:05
10-Dec-2008 10:05
You know, maybe this goes without saying, but I thought I would drop a note in here. When developing code to resize images, it is best not to use GD. When using the current GD methodologies, you are reading content from an image and manipulating it. By then writing that content to a brand new file, you are losing the EXIF data.
For purposes when you want to retain EXIF data, it is recommended that you compile in and use the PECL Imagick extension. It has great resizing methods built right in and the EXIF data is retained.
code at ashleyhunt dot co dot uk
24-Oct-2008 01:02
24-Oct-2008 01:02
I have been looking to send the output from GD to a text string without proxying via a file or to a browser.
I have come up with a solution.
This code buffers the output between the ob_start() and ob_end() functions into ob_get_contents()
See the example below
<?php
// Create a test source image for this example
$im = imagecreatetruecolor(300, 50);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
// start buffering
ob_start();
// output jpeg (or any other chosen) format & quality
imagejpeg($im, NULL, 85);
// capture output to string
$contents = ob_get_contents();
// end capture
ob_end_clean();
// be tidy; free up memory
imagedestroy($im);
// lastly (for the example) we are writing the string to a file
$fh = fopen("./temp/img.jpg", "a+" );
fwrite( $fh, $contents );
fclose( $fh );
?>
Enjoy!
Ashley
