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
Processamento de Imagem (GD)
- Introdução
- Instalação/Configuração
- Constantes pré-definidas
- Exemplos
- Funções da GD
- gd_info — Obtém informações sobre a biblioteca GD instalada atualmente
- getimagesize — Obtém o tamanho de uma imagem
- getimagesizefromstring — Get the size of an image from a string
- image_type_to_extension — Get file extension for image type
- image_type_to_mime_type — Obtém o Mime-Type para um tipo de imagem retornado por getimagesize, exif_read_data, exif_thumbnail, exif_imagetype
- image2wbmp — Envia uma imagem para o browser ou arquivo
- 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 — Set the blending mode for an image
- imageantialias — Indica se as funções de antialias devem ser usadas ou não
- imagearc — Desenha um elipse parcial
- imagechar — Desenha um caractere horizontalmente
- imagecharup — Desenha um caractere verticalmente
- imagecolorallocate — Aloca uma cor para uma imagem
- imagecolorallocatealpha — Aloca cor para uma imagem
- imagecolorat — Retorna o índice da cor de um pixel
- imagecolorclosest — Retorna o índice da cor mais próxima da cor especificada
- imagecolorclosestalpha — Retorna o índice da cor mais próxima da cor especificada + transparencia
- imagecolorclosesthwb — Get the index of the color which has the hue, white and blackness
- imagecolordeallocate — Desaloca uma cor para uma imagem
- imagecolorexact — Retorna o índice da cor especificada
- imagecolorexactalpha — Retorna o índice da cor especificada + transparencia
- imagecolormatch — Faz com que a versão das cores da paleta sejam mais próximas da versão truecolor
- imagecolorresolve — Retorna o índice da cor especificada ou a alternativa mais próxima possível
- imagecolorresolvealpha — Retorna o índice da cor especificada + transparência ou a sua alternativa mais próxima
- imagecolorset — Set the color for the specified palette index
- imagecolorsforindex — Retorna as cores de um índice
- imagecolorstotal — Retorna o número de cores na paleta de uma imagem
- imagecolortransparent — Define uma cor como tansparente
- imageconvolution — Apply a 3x3 convolution matrix, using coefficient and offset
- imagecopy — Copia parte de uma imagem
- imagecopymerge — Copia e combina uma parte de uma imagem
- imagecopymergegray — Copy and merge part of an image with gray scale
- imagecopyresampled — Copy and resize part of an image with resampling
- imagecopyresized — Copy and resize part of an image
- imagecreate — Cria uma nova imagem baseada em paleta
- imagecreatefromgd2 — Cria uma nova imagem apartir de um arquivo GD2 ou URL
- imagecreatefromgd2part — Cria uma nova imagem apartir de uma parte de um arquivo GD ou URL
- imagecreatefromgd — Cria uma nova imagem apartir de um arquivo GD ou URL
- imagecreatefromgif — Cria uma nova imagem a partir de um arquivo ou URL
- imagecreatefromjpeg — Cria uma nova imagem a a partir de um arquivo ou URL
- imagecreatefrompng — Cria uma nova imagem a apratir de um arquivo ou URL
- imagecreatefromstring — Cria uma nova imagem a apartir da imagem na string
- imagecreatefromwbmp — Cria uma nova imagem a apratir de um arquivo ou URL
- imagecreatefromwebp — Create a new image from file or URL
- imagecreatefromxbm — Cria uma nova imagem a a partir de um arquivo ou URL
- imagecreatefromxpm — Cria uma nova imagem a apratir de um arquivo ou URL
- imagecreatetruecolor — Cria uma nova imagem true color
- 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 — Desenha uma linha pontilhada
- imagedestroy — Destrói uma imagem
- imageellipse — Desenha um elipse
- imagefill — Flood fill
- imagefilledarc — Draw a partial arc and fill it
- imagefilledellipse — Desenha um elipse prenchido
- imagefilledpolygon — Desenha um poligono prenchido
- imagefilledrectangle — Desenha um retângulo prenchido
- imagefilltoborder — Flood fill to specific color
- imagefilter — Applies a filter to an image
- imageflip — Flips an image using a given mode
- imagefontheight — Retorna a altura da fonte
- imagefontwidth — Retorna a largura da fonte
- imageftbbox — Give the bounding box of a text using fonts via freetype2
- imagefttext — Escreve texto na imagem usando fontes FreeType 2
- imagegammacorrect — Apply a gamma correction to a GD image
- imagegd2 — Envia uma imagem GD2
- imagegd — Envia a imagem GD para o browser ou um arquivo
- imagegif — Envia uma imagem para o browser ou arquivo
- imagegrabscreen — Captures the whole screen
- imagegrabwindow — Captures a window
- imageinterlace — Ativa ou desativa o entrelaçamento
- imageistruecolor — Indica quando uma imagem é uma imagem truecolor
- imagejpeg — Envia a imagem para o borwser ou arquivo
- imagelayereffect — Set the alpha blending flag to use the bundled libgd layering effects
- imageline — Desenha uma linha
- imageloadfont — Carrega uma nova fonte
- imagepalettecopy — Copia a paleta de uma imagem para a outra
- imagepalettetotruecolor — Converts a palette based image to true color
- imagepng — Envia uma imagem PNG para o browser ou para um arquivo
- imagepolygon — Desenha um poligono
- imagepsbbox — Give the bounding box of a text rectangle using PostScript Type1 fonts
- imagepsencodefont — Change the character encoding vector of a font
- imagepsextendfont — Extend or condense a font
- imagepsfreefont — Libera a memória usada por uma fonte PostScript Type
- imagepsloadfont — Carrega uma fonte PostScript Type 1 a partir de um arquivo
- imagepsslantfont — Slant a font
- imagepstext — Draws a text over an image using PostScript Type1 fonts
- imagerectangle — Desenha um retângulo
- imagerotate — Gira uma imagem com o ângulo dado
- imagesavealpha — Define a opção para salvar a informação completa do alpha channel (ao invés de a transparencia de uma cor só) quando estiver salvando imagens PNG.
- imagescale — Scale an image using the given new width and height
- imagesetbrush — Set the brush image for line drawing
- imagesetinterpolation — Set the interpolation method
- imagesetpixel — Define um único pixel
- imagesetstyle — Set the style for line drawing
- imagesetthickness — Define a espessura para o desenho de linhas
- imagesettile — Set the tile image for filling
- imagestring — Desenha uma string horizontalmente
- imagestringup — Desenha uma string verticalmente
- imagesx — Obtem a largura da imagem
- imagesy — Obtém a altura da imagem
- imagetruecolortopalette — Converte uma imagem true color para uma imagem de paleta
- imagettfbbox — Retorna uma caixa com o limites de um texto usando fontes TrueType
- imagettftext — Escreve texto na imagem usando fontes TrueType
- imagetypes — Retorna os tipos de imagens suportados por esta instalação do PHP
- imagewbmp — Envia uma imagem para o browser ou arquivo
- imagewebp — Output an WebP image to browser or file
- imagexbm — Output an XBM image to browser or file
- iptcembed — Embute dados binários IPTC em uma imagem JPEG
- iptcparse — Analisa um bloco binário IPTC em tags simples.
- jpeg2wbmp — Converte um arquivo de imagem JPEG para um arquivo de imagem WBMP
- png2wbmp — Converte um arquivo de imagem PNG para um arquivo de imagem WBMP
kurdtpage at gmail dot com ¶
2 years ago
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.
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
?>
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.
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
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 ¶
2 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.
