When using GD, please make sure of the following things:
1. The file that is used to manipulate images is saved as ANSI format and not UTF-8
2. There is no space in front of the opening tag <?php
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
- getimagesizefromstring — Récupère la taille d'une image depuis une chaîne
- 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 — Affichage de l'image vers le navigateur ou dans un fichier
- imageaffine — Return an image containing the affine tramsformed src image, using an optional clipping area
- imageaffinematrixconcat — Concat two matrices (as in doing many ops in one go)
- imageaffinematrixget — Return an image containing the affine tramsformed src image, using an optional clipping area
- 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 depuis un fichier ou une URL
- imagecreatefromjpeg — Crée une nouvelle image depuis un fichier ou une URL
- imagecreatefrompng — Crée une nouvelle image depuis un fichier ou une URL
- imagecreatefromstring — Crée une image à partir d'une chaîne
- imagecreatefromwbmp — Crée une nouvelle image depuis un fichier ou une URL
- imagecreatefromwebp — Crée une nouvelle image depuis un fichier ou une URL
- imagecreatefromxbm — Crée une nouvelle image depuis un fichier ou une URL
- imagecreatefromxpm — Crée une nouvelle image depuis un fichier ou une URL
- imagecreatetruecolor — Crée une nouvelle image en couleurs vraies
- imagecrop — Crop an image using the given coordinates and size, x, y, width and height
- imagecropauto — Crop an image automatically using one of the available modes
- 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
- imageflip — Retourne une image en utilisant le mode fourni
- 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 — Affichage de l'image vers le navigateur ou dans 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 — Affichage de l'image vers le navigateur ou dans 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
- imagepalettetotruecolor — Convertit une image basée sur une palette en couleur vraie
- 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
- imagescale — Scale an image using the given new width and height
- imagesetbrush — Modifie la brosse pour le dessin des lignes
- imagesetinterpolation — Set the interpolation method
- 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 — Affichage de l'image vers le navigateur ou dans un fichier
- imagewebp — Affiche une image WebP vers un navigateur ou un fichier
- 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
kurdtpage at gmail dot com ¶
2 years ago
code at ashleyhunt dot co dot uk ¶
4 years ago
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
donatj at gmail dot com ¶
1 year ago
UTF-8 is fine with GD - as well as any other Unicode transformation format - you just need to ensure your saved file doesn't contain the dreaded byte order mark.
herbert dot walde at googlemail dot com ¶
1 year ago
In case your script is using output-buffering-functions somewhere, then you have to clear the buffer first ( with ob_clear() ), before outputting an image with a function like imagepng().
And you should make sure that no buffer will get send after outputing an image by using the ob_end_flush()-function.
Furthermore you should check if a buffer has already been flushed somewhere before. This can be done using the headers_sent()-function.
Here is the full solution:
<?php
if(headers_sent()){
die('Headers have been send somewhere within my script');
}
ob_clean(); //Clears the buffer
header('Content-type: image/png');
imagepng($img, NULL, 0, NULL);
ob_end_flush(); //Now we send the header and image plus we make sure that nothing will get send from now on (including possible shutdown-functions and __destruct()-methods) till the end of page-execution
?>
Thomas ¶
4 years ago
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.
rmayo100 at yahoo dot com ¶
3 years ago
I use GD to create graphs of data that exists in my system. I use a link like this to place the graph image on my page:
<img src="image.php" name="Image">
And this works just fine. Image.php acquires the data to be graphed and creates a png image with it. (And is even able to do it very quickly.)
However, I would also like to have external access that data. Unfortunately, it's is acquired by the graphing function from a UDP broadcast stream and I have no idea how to make it available outside that file (or how to capture it twice, perhaps).
I've had exactly no luck trying to implement a global variable, I suspect, because global variables really aren't global and their scope doesn't span multiple files.
I don't know if this is the right venue for this post, but I'm stumped so far and I had to post it somewhere.
Thanks,
R.
mail at ecross dot nl ¶
3 years ago
hello there,
i made a function to create a gradient image.
description:
gradient(int image_width, int image_height,
int start_red, int start_green, int start_blue,
int end_red, int end_green, int end_blue,
bool vertical)
function:
<?php
function gradient($image_width, $image_height,$c1_r, $c1_g, $c1_b, $c2_r, $c2_g, $c2_b, $vertical=false)
{
// first: lets type cast;
$image_width = (integer)$image_width;
$image_height = (integer)$image_height;
$c1_r = (integer)$c1_r;
$c1_g = (integer)$c1_g;
$c1_b = (integer)$c1_b;
$c2_r = (integer)$c2_r;
$c2_g = (integer)$c2_g;
$c2_b = (integer)$c2_b;
$vertical = (bool)$vertical;
// create a image
$image = imagecreatetruecolor($image_width, $image_height);
// make the gradient
for($i=0; $i<$image_height; $i++)
{
$color_r = floor($i * ($c2_r-$c1_r) / $image_height)+$c1_r;
$color_g = floor($i * ($c2_g-$c1_g) / $image_height)+$c1_g;
$color_b = floor($i * ($c2_b-$c1_b) / $image_height)+$c1_b;
$color = ImageColorAllocate($image, $color_r, $color_g, $color_b);
imageline($image, 0, $i, $image_width, $i, $color);
}
# Prints out all the figures and picture and frees memory
header('Content-type: image/png');
if($vertical){$image = imagerotate($image, 90, 0);}
ImagePNG($image);
imagedestroy($image);
}
?>
jordan at jkdesign dot org ¶
3 years ago
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);
?>
mac_doggie at hotmail dot com ¶
3 years ago
A way to read the color of a pixel:
<?php
$img = imagecreatefrompng("image1.png");
$w = imagesx($img);
$h = imagesy($img);
for($y=0;$y<$h;$y++) {
for($x=0;$x<$w;$x++) {
$rgb = imagecolorat($img, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
echo "#".str_repeat("0",2-strlen(dechex($r))).dechex($r).
str_repeat("0",2-strlen(dechex($g))).dechex($g).
str_repeat("0",2-strlen(dechex($b))).dechex($b).",";
}
echo "<br />\r\n";
}
?>
[EDIT BY thiago: merged two notes from same submitter.]
scurvysquid at yahoo dot com ¶
4 years ago
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.
