Which of the following is not a valid php gd function

Table of Contents

  • gd_info — Retrieve information about the currently installed GD library
  • getimagesize — Get the size of an image
  • 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 — Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype
  • image2wbmp — Output image to browser or file
  • imageaffine — Return an image containing the affine transformed src image, using an optional clipping area
  • imageaffinematrixconcat — Concatenate two affine transformation matrices
  • imageaffinematrixget — Get an affine transformation matrix
  • imagealphablending — Set the blending mode for an image
  • imageantialias — Should antialias functions be used or not
  • imagearc — Draws an arc
  • imageavif — Output image to browser or file
  • imagebmp — Output a BMP image to browser or file
  • imagechar — Draw a character horizontally
  • imagecharup — Draw a character vertically
  • imagecolorallocate — Allocate a color for an image
  • imagecolorallocatealpha — Allocate a color for an image
  • imagecolorat — Get the index of the color of a pixel
  • imagecolorclosest — Get the index of the closest color to the specified color
  • imagecolorclosestalpha — Get the index of the closest color to the specified color + alpha
  • imagecolorclosesthwb — Get the index of the color which has the hue, white and blackness
  • imagecolordeallocate — De-allocate a color for an image
  • imagecolorexact — Get the index of the specified color
  • imagecolorexactalpha — Get the index of the specified color + alpha
  • imagecolormatch — Makes the colors of the palette version of an image more closely match the true color version
  • imagecolorresolve — Get the index of the specified color or its closest possible alternative
  • imagecolorresolvealpha — Get the index of the specified color + alpha or its closest possible alternative
  • imagecolorset — Set the color for the specified palette index
  • imagecolorsforindex — Get the colors for an index
  • imagecolorstotal — Find out the number of colors in an image's palette
  • imagecolortransparent — Define a color as transparent
  • imageconvolution — Apply a 3x3 convolution matrix, using coefficient and offset
  • imagecopy — Copy part of an image
  • imagecopymerge — Copy and merge part of an image
  • 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 — Create a new palette based image
  • imagecreatefromavif — Create a new image from file or URL
  • imagecreatefrombmp — Create a new image from file or URL
  • imagecreatefromgd2 — Create a new image from GD2 file or URL
  • imagecreatefromgd2part — Create a new image from a given part of GD2 file or URL
  • imagecreatefromgd — Create a new image from GD file or URL
  • imagecreatefromgif — Create a new image from file or URL
  • imagecreatefromjpeg — Create a new image from file or URL
  • imagecreatefrompng — Create a new image from file or URL
  • imagecreatefromstring — Create a new image from the image stream in the string
  • imagecreatefromtga — Create a new image from file or URL
  • imagecreatefromwbmp — Create a new image from file or URL
  • imagecreatefromwebp — Create a new image from file or URL
  • imagecreatefromxbm — Create a new image from file or URL
  • imagecreatefromxpm — Create a new image from file or URL
  • imagecreatetruecolor — Create a new true color image
  • imagecrop — Crop an image to the given rectangle
  • imagecropauto — Crop an image automatically using one of the available modes
  • imagedashedline — Draw a dashed line
  • imagedestroy — Destroy an image
  • imageellipse — Draw an ellipse
  • imagefill — Flood fill
  • imagefilledarc — Draw a partial arc and fill it
  • imagefilledellipse — Draw a filled ellipse
  • imagefilledpolygon — Draw a filled polygon
  • imagefilledrectangle — Draw a filled rectangle
  • imagefilltoborder — Flood fill to specific color
  • imagefilter — Applies a filter to an image
  • imageflip — Flips an image using a given mode
  • imagefontheight — Get font height
  • imagefontwidth — Get font width
  • imageftbbox — Give the bounding box of a text using fonts via freetype2
  • imagefttext — Write text to the image using fonts using FreeType 2
  • imagegammacorrect — Apply a gamma correction to a GD image
  • imagegd2 — Output GD2 image to browser or file
  • imagegd — Output GD image to browser or file
  • imagegetclip — Get the clipping rectangle
  • imagegetinterpolation — Get the interpolation method
  • imagegif — Output image to browser or file
  • imagegrabscreen — Captures the whole screen
  • imagegrabwindow — Captures a window
  • imageinterlace — Enable or disable interlace
  • imageistruecolor — Finds whether an image is a truecolor image
  • imagejpeg — Output image to browser or file
  • imagelayereffect — Set the alpha blending flag to use layering effects
  • imageline — Draw a line
  • imageloadfont — Load a new font
  • imageopenpolygon — Draws an open polygon
  • imagepalettecopy — Copy the palette from one image to another
  • imagepalettetotruecolor — Converts a palette based image to true color
  • imagepng — Output a PNG image to either the browser or a file
  • imagepolygon — Draws a polygon
  • imagerectangle — Draw a rectangle
  • imageresolution — Get or set the resolution of the image
  • imagerotate — Rotate an image with a given angle
  • imagesavealpha — Whether to retain full alpha channel information when saving PNG images
  • imagescale — Scale an image using the given new width and height
  • imagesetbrush — Set the brush image for line drawing
  • imagesetclip — Set the clipping rectangle
  • imagesetinterpolation — Set the interpolation method
  • imagesetpixel — Set a single pixel
  • imagesetstyle — Set the style for line drawing
  • imagesetthickness — Set the thickness for line drawing
  • imagesettile — Set the tile image for filling
  • imagestring — Draw a string horizontally
  • imagestringup — Draw a string vertically
  • imagesx — Get image width
  • imagesy — Get image height
  • imagetruecolortopalette — Convert a true color image to a palette image
  • imagettfbbox — Give the bounding box of a text using TrueType fonts
  • imagettftext — Write text to the image using TrueType fonts
  • imagetypes — Return the image types supported by this PHP build
  • imagewbmp — Output image to browser or file
  • imagewebp — Output a WebP image to browser or file
  • imagexbm — Output an XBM image to browser or file
  • iptcembed — Embeds binary IPTC data into a JPEG image
  • iptcparse — Parse a binary IPTC block into single tags
  • jpeg2wbmp — Convert JPEG image file to WBMP image file
  • png2wbmp — Convert PNG image file to WBMP image file

felipensp at gmail dot com

16 years ago

Representation decimal of a color in hexadecimal for use on functions of library GD.

// Representation hexadecimal
   
$var = '#FFFFFF';

    function

getRgbFromGd($color_hex) {

        return

array_map('hexdec', explode('|', wordwrap(substr($color_hex, 1), 2, '|', 1)));

    }

print_r(getRgbFromGd($var));// Output: Array ( [0] => 255 [1] => 255 [2] => 255 )?>

michal-ok at o2 dot pl

16 years ago

The image sharpen function (by Alex R. Austin) provided below seems to be very resource hungry and I couldn't make it work on two different servers - trying to sharpen a 413 x 413 image I ended up with "Fatal error: Allowed memory size of 8388608 bytes exhausted" or "Internal Server Error" or the script terminated without notice. Because I had no priviliges to change the default memory limit on these servers I started looking for other sharpen functions. I have come across a php Unsharp Mask function which works like a charm on both of the servers I dealt with. It can be found at http://vikjavev.no/hovudsida/umtestside.php.

shd at earthling dot net

16 years ago

If you happen to need a way to output a Windows BMP file (e.g. when using the PEAR ExcelWriter), feel free to use the following code:

function imagebmp ($im, $fn = false)
{
    if (!
$im) return false;

                if (

$fn === false) $fn = 'php://output';
   
$f = fopen ($fn, "w");
    if (!
$f) return false;//Image dimensions
   
$biWidth = imagesx ($im);
   
$biHeight = imagesy ($im);
   
$biBPLine = $biWidth * 3;
   
$biStride = ($biBPLine + 3) & ~3;
   
$biSizeImage = $biStride * $biHeight;
   
$bfOffBits = 54;
   
$bfSize = $bfOffBits + $biSizeImage;//BITMAPFILEHEADER
   
fwrite ($f, 'BM', 2);
   
fwrite ($f, pack ('VvvV', $bfSize, 0, 0, $bfOffBits));//BITMAPINFO (BITMAPINFOHEADER)
   
fwrite ($f, pack ('VVVvvVVVVVV', 40, $biWidth, $biHeight, 1, 24, 0, $biSizeImage, 0, 0, 0, 0));$numpad = $biStride - $biBPLine;
    for (
$y = $biHeight - 1; $y >= 0; --$y)
    {
        for (
$x = 0; $x < $biWidth; ++$x)
        {
           
$col = imagecolorat ($im, $x, $y);
           
fwrite ($f, pack ('V', $col), 3);
        }
        for (
$i = 0; $i < $numpad; ++$i)
           
fwrite ($f, pack ('C', 0));
    }
   
fclose ($f);
    return
true;
}
?>

It works the same way as regular imagejpeg/imagepng do and only supports GD2.0 true colour bitmaps (which is what's required by ExcelWriter).

chuckstudios at gmail dot com

13 years ago

I wrote a simple function to convert an image resource to PGM (portable graymap) in order to feed it to an OCR program. It works just like the rest of the image output functions, and will convert to grayscale for you:

    function imagepgm($image, $filename = null)
    {
       
$pgm = "P5 ".imagesx($image)." ".imagesy($image)." 255\n";
        for(
$y = 0; $y < imagesy($image); $y++)
        {
            for(
$x = 0; $x < imagesx($image); $x++)
            {
               
$colors = imagecolorsforindex($image, imagecolorat($image, $x, $y));
               
$pgm .= chr(0.3 * $colors["red"] + 0.59 * $colors["green"] + 0.11 * $colors["blue"]);
            }
        }
        if(
$filename != null)
        {
           
$fp = fopen($filename, "w");
           
fwrite($fp, $pgm);
           
fclose($fp);
        }
        else
        {
            return
$pgm;
        }
    }
?>

ingo at jache dot de

10 years ago

I know this might look somewhat superfluous to others, but i once came across a situation where i needed a *strong* blur on an image without having ImageMagick installed. Executing the convolution-filter several times on the same image is awfully slow and still doesn't give a good blur.

The function below accepts a truecolor-image and a blur-factor between 0.0 and 1.0. Beware: It's still quite slow.

function blurImage($srcimg,$blur)
    {
       
$blur = $blur*$blur;
       
$blur = max(0,min(1,$blur));$srcw = imagesx($srcimg);
       
$srch = imagesy($srcimg);$dstimg = imagecreatetruecolor($srcw,$srch);$f1a = $blur;
       
$f1b = 1.0 - $blur;$cr = 0; $cg = 0; $cb = 0;
       
$nr = 0; $ng = 0; $nb = 0;$rgb = imagecolorat($srcimg,0,0);
       
$or = ($rgb >> 16) & 0xFF;
       
$og = ($rgb >> 8) & 0xFF;
       
$ob = ($rgb) & 0xFF;//-------------------------------------------------
        // first line is a special case
        //-------------------------------------------------
       
$x = $srcw;
       
$y = $srch-1;
        while (
$x--)
        {
           
//horizontal blurren
           
$rgb = imagecolorat($srcimg,$x,$y);
           
$cr = ($rgb >> 16) & 0xFF;
           
$cg = ($rgb >> 8) & 0xFF;
           
$cb = ($rgb) & 0xFF;$nr = ($cr * $f1a) + ($or * $f1b);
           
$ng = ($cg * $f1a) + ($og * $f1b);
           
$nb = ($cb * $f1a) + ($ob * $f1b);    $or = $nr;
           
$og = $ng;
           
$ob = $nb;imagesetpixel($dstimg,$x,$y,($nr << 16) | ($ng << 8) | ($nb));
        }
       
//-------------------------------------------------

        //-------------------------------------------------
        // now process the entire picture
        //-------------------------------------------------

$y = $srch-1;
        while (
$y--)
        {
$rgb = imagecolorat($srcimg,0,$y);
           
$or = ($rgb >> 16) & 0xFF;
           
$og = ($rgb >> 8) & 0xFF;
           
$ob = ($rgb) & 0xFF;$x = $srcw;
            while (
$x--)
            {
               
//horizontal
               
$rgb = imagecolorat($srcimg,$x,$y);
               
$cr = ($rgb >> 16) & 0xFF;
               
$cg = ($rgb >> 8) & 0xFF;
               
$cb = ($rgb) & 0xFF;$nr = ($cr * $f1a) + ($or * $f1b);
               
$ng = ($cg * $f1a) + ($og * $f1b);
               
$nb = ($cb * $f1a) + ($ob * $f1b);    $or = $nr;
               
$og = $ng;
               
$ob = $nb;//vertical
               
$rgb = imagecolorat($dstimg,$x,$y+1);
               
$vr = ($rgb >> 16) & 0xFF;
               
$vg = ($rgb >> 8) & 0xFF;
               
$vb = ($rgb) & 0xFF;$nr = ($nr * $f1a) + ($vr * $f1b);
               
$ng = ($ng * $f1a) + ($vg * $f1b);
               
$nb = ($nb * $f1a) + ($vb * $f1b);    $vr = $nr;
               
$vg = $ng;
               
$vb = $nb;imagesetpixel($dstimg,$x,$y,($nr << 16) | ($ng << 8) | ($nb));
            }

                }

//-------------------------------------------------
       
return $dstimg;       

    }

$srcimg = imagecreatefromjpeg("test.jpg");
   
$dstimg = blurImage($srcimg,0.2);header('Content-type: image/jpeg');
    echo(
imagejpeg($dstimg) );
    exit();
?>

delabahan at gmail dot com

5 years ago

This is an example of get high resolution images.

/**
* Class name      : resizeImage
* Created by   : wang
* Description   : This class is to resize the image from original size to new size
*/
class resizeImage
{
    
/**
     * Function name : resize_img
     * Description   : This function is to resize image
     * @param          : $origimg variable is the original image
     * @param          : $newimg variable is the new image
     * @param          : $w variable is the width of image
     * @param          : $f variable is the height of image
     */
   
public  function resize_img($origimg,$newimg,$w,$h){
       
$info = getimagesize($origimg);
       
$mime   = $info['mime'];// Make sure that the requested file is actually an image
       
if(substr($mime, 0, 6) != 'image/')
        {
           
header('HTTP/1.1 400 Bad Request');
            return
'Error: requested file is not an accepted type: ' .$origimg;
            exit();
        }
// Check they extention of image
       
$extension = image_type_to_extension($info[2]);
        if(
strtolower($extension) == '.png'){
           
$img = $this->resize_imagepng($origimg,$w, $h);
           
imagepng($img,$newimg);
           
imagedestroy($img);
        }elseif(
strtolower($extension) == '.jpeg'){
           
$img = $this->resize_imagejpeg($origimg, $w, $h);
           
imagejpeg($img, $newimg);
           
imagedestroy($img);
        }elseif(
strtolower($extension == '.gif')){
           
$img = $this->resize_imagegif($origimg, $w, $h);
           
imagegif($img,$newimg);
           
imagedestroy($img);
        }

    }

/**
     * End function name : resize_img
     */

     /**
     * Function name : resize_imagepng
     * Description   : This function is to resize png image
     * @param          : $file variable is the original image
     * @param          : $w variable is the width of image
     * @param          : $f variable is the height of image
     */

private function resize_imagepng($file, $w, $h) {
       list(
$width, $height) = getimagesize($file);
      
$src = imagecreatefrompng($file);
      
$dst = imagecreatetruecolor($w, $h);
      
imagecopyresampled($dst, $src, 0, 0, 0, 0, $w, $h, $width, $height);
       return
$dst;
    }
    
/**
     * End function name : resize_imagepng
     */

     /**
     * Function name : resize_imagejpeg
     * Description   : This function is to resize jpeg image
     * @param          : $file variable is the original image
     * @param          : $w variable is the width of image
     * @param          : $f variable is the height of image
     */

private function resize_imagejpeg($file, $w, $h) {
       list(
$width, $height) = getimagesize($file);
      
$src = imagecreatefromjpeg($file);
      
$dst = imagecreatetruecolor($w, $h);
      
imagecopyresampled($dst, $src, 0, 0, 0, 0, $w, $h, $width, $height);
       return
$dst;
    }
    
/**
     * End function name : resize_imagejpeg
     */

     /**
     * Function name : resize_imagegif
     * Description   : This function is to resize gif image
     * @param          : $file variable is the original image
     * @param          : $w variable is the width of image
     * @param          : $f variable is the height of image
     */

private function resize_imagegif($file, $w, $h) {
       list(
$width, $height) = getimagesize($file);
      
$src = imagecreatefromgif($file);
      
$dst = imagecreatetruecolor($w, $h);
      
imagecopyresampled($dst, $src, 0, 0, 0, 0, $w, $h, $width, $height);
       return
$dst;
    }
    
/**
     * End function name : resize_imagegif
     */
}
/**
* End class name : resizeImage
*/
?>

jeff at lushmedia dot com

18 years ago

I wrote an online overview of the image functions that people might find useful. In addition to a general overview of the various function categories and code samples, I have included many interactive examples of the functions, allowing viewers to experiment with the parameters, and seeing the results in real time. The presentation is located at New York PHP
http://www.nyphp.org/content/presentations/GDintro/

ph_corp at yahoo dot fr

14 years ago

/**
HSL/RGB conversion functions
very useful for a lot of applications
**/
function RBGtoHSL ( $R, $G, $B )
{
$var_R = ( $R / 255 );
   
$var_G = ( $G / 255 );
   
$var_B = ( $B / 255 );$var_Min = min( $var_R, $var_G, $var_B )
   
$var_Max = max( $var_R, $var_G, $var_B )
   
$del_Max = $var_Max - $var_Min

    $L

= ( $var_Max + $var_Min ) / 2;

    if (

$del_Max == 0 )
    {
      
$H = 0
       $S
= 0
   
}
    else
    {
        if (
$L < 0.5 )
        {
           
$S = $del_Max / ( $var_Max + $var_Min );
        }
        else
        {
           
$S = $del_Max / ( 2 - $var_Max - $var_Min );
        }
$del_R = ( ( ( $var_Max - $var_R ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
       
$del_G = ( ( ( $var_Max - $var_G ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
       
$del_B = ( ( ( $var_Max - $var_B ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;

        if (

$var_R == $var_Max )
        {
           
$H = $del_B - $del_G;
        }
        else if (
$var_G == $var_Max )
        {
           
$H = ( 1 / 3 ) + $del_R - $del_B;
        }
        else if (
$var_B == $var_Max )
        {
           
$H = ( 2 / 3 ) + $del_G - $del_R;
        }

        if (

$H < 0 )
        {
           
$H += 1;
        }
        if (
$H > 1 )
        {
           
$H -= 1
       
}

    }

    return array(

$H, $S, $L );

}

function

HuetoRGB( $v1, $v2, $vH )
{
    if (
$vH < 0 )
    {
       
$vH += 1;
    }
    if (
$vH > 1 )
    {
       
$vH -= 1;
    }
    if ( (
6 * $vH ) < 1 )
    {
        return (
$v1 + ( $v2 - $v1 ) * 6 * $vH );
    }
    if ( (
2 * $vH ) < 1 )
    {
        return (
$v2 );
    }
    if ( (
3 * $vH ) < 2 )
    {
        return (
$v1 + ( $v2 - $v1 ) * ( ( 2 / 3 ) - $vH ) * 6 );
    }
    return (
$v1 )
}

function

HSLtoRGB ( $H, $S, $L )
{

    if (

$S == 0 )
    {
       
$R = $L * 255;
       
$G = $L * 255;
       
$B = $L * 255;
    }
    else
    {
        if (
$L < 0.5 )
        {
           
$var_2 = $L * ( 1 + $S );
        }
        else
        {
           
$var_2 = ( $L + $S ) - ( $S * $L );
        }
$var_1 = 2 * $L - $var_2;$R = 255 * HuetoRGB( $var_1, $var_2, $H + ( 1 / 3 ) );
       
$G = 255 * HuetoRGB( $var_1, $var_2, $H );
       
$B = 255 * HuetoRGB( $var_1, $var_2, $H - ( 1 / 3 ) );
    }

    return array(

$R, $G, $B );

}

function

distance ( $R1, $G1, $B1, $R2, $G2, $B2 )
{
   
$result = sqrt ( ( $R1 - $R2 )*( $R1 - $R2 ) + ( $G1 - $G2 )*( $G1 - $G2 ) + ( $B1 - $B2 )*( $B1 - $B2 ) );
    return (
$result );
}
?>

mpyw

5 years ago

This is an example of black-and-white imagebmp() implementation.

/**
* Output a black-and-white BMP image to either the browser or a file.
*
* @param resource $image
*            An image resource, returned by one of the image creation functions,
*            such as imagecreatetruecolor().
*
* @param string|null $to
*            The path or an open stream resource
*            (which is automatically being closed after this function returns)
*            to save the file to.
*            If not set or NULL, the raw image stream will be outputted directly.
*
* @param float $threshold
*            The number in the range of 0.0 to 1.0.
*            Brighter for larger, or darker for smaller.
*
* @return bool Returns TRUE on success or FALSE on failure.
*
*/
function imagebwbmp($image, $to = null, $threshold = 0.5)
{
    if (
func_num_args() < 1) {
       
$fmt = "imagebwbmp() expects a least 1 parameters, %d given";
       
trigger_error(sprintf($fmt, func_num_args()), E_USER_WARNING);
        return;
    }
    if (!
is_resource($image)) {
       
$fmt = "imagebwbmp() expects parameter 1 to be resource, %s given";
       
trigger_error(sprintf($fmt, gettype($image)), E_USER_WARNING);
        return;
    }
    if (!
is_numeric($threshold)) {
       
$fmt = "imagebwbmp() expects parameter 3 to be float, %s given";
       
trigger_error(sprintf($fmt, gettype($threshold)), E_USER_WARNING);
        return;
    }

    if (

get_resource_type($image) !== 'gd') {
       
$msg = "imagebwbmp(): supplied resource is not a valid gd resource";
       
trigger_error($msg, E_USER_WARNING);
        return
false;
    }
    switch (
true) {
        case
$to === null:
            break;
        case
is_resource($to) && get_resource_type($to) === 'stream':
        case
is_string($to) && $to = fopen($to, 'wb'):
            if (
preg_match('/[waxc+]/', stream_get_meta_data($to)['mode'])) {
                break;
            }
        default:
           
$msg = "imagebwbmp(): Invalid 2nd parameter, it must a writable filename or a writable stream";
           
trigger_error($msg, E_USER_WARNING);
            return
false;
    }

    if (

$to === null) {
       
$to = fopen('php://output', 'wb');
    }
$biWidth = imagesx($image);
   
$biHeight = imagesy($image);
   
$biSizeImage = ((int)ceil($biWidth / 32) * 32 / 8 * $biHeight);
   
$bfOffBits = 54 + 4 * 2; // Use two colors (black and white)
   
$bfSize = $bfOffBits + $biSizeImage;fwrite($to, 'BM');
   
fwrite($to, pack('VvvV', $bfSize, 0, 0, $bfOffBits));
   
fwrite($to, pack('VVVvvVVVVVV', 40, $biWidth, $biHeight, 1, 1, 0, $biSizeImage, 0, 0, 0, 0));
   
fwrite($to, "\xff\xff\xff\x00"); // white
   
fwrite($to, "\x00\x00\x00\x00"); // blackfor ($y = $biHeight - 1; $y >= 0; --$y) {
       
$byte = 0;
        for (
$x = 0; $x < $biWidth; ++$x) {
           
$rgb = imagecolorsforindex($image, imagecolorat($image, $x, $y));
           
$value = (0.299 * $rgb['red'] + 0.587 * $rgb['green'] + 0.114 * $rgb['blue']) / 0xff;
           
$color = (int)($value > $threshold);
           
$byte = ($byte << 1) | $color;
            if (
$x % 8 === 7) {
               
fwrite($to, pack('C', $byte));
               
$byte = 0;
            }
        }
        if (
$x % 8) {
           
fwrite($to, pack('C', $byte << (8 - $x % 8)));
        }
        if (
$x % 32) {
           
fwrite($to, str_repeat("\x00", (int)((32 - $x % 32) / 8)));
        }
    }

    return

true;
}
?>