Skip to the content...

Welcome to the David Walsh Blog. I'm a MooTools, Dojo, jQuery, CSS, and PHP Web Developer located in Madison, Wisconsin, United States. Please contact me if I can make your experience on my website better.

Image Manipulation with PHP and the GD Library

11 Responses »
David Walsh Sepia

Yeah, I'm a Photoshop wizard. I rock the selection tool. I crop like a farmer. I dominate the bucket tool. Hell, I even went as far as wielding the wizard wand selection tool once.

...OK I'm rubbish when it comes to Photoshop. I avoid opening the memory pig whenever possible. Many times I even need to automate image manipulation on customer websites. Luckily for a nerd like me, PHP's GD library allows me to systematically execute basic image manipulations without the need for Photoshop, GIMP, or other desktop tools.

The PHP -- Color to Greyscale

//to black and white
if(!file_exists('dw-bw.png')) {
	$img = imagecreatefrompng('dw-manipulate-me.png');
	imagefilter($img,IMG_FILTER_GRAYSCALE);
	imagepng($img,'db-bw.png');
	imagedestroy($img);
}

The PHP -- Color to Negative

//to negative
if(!file_exists('dw-negative.png')) {
	$img = imagecreatefrompng('dw-manipulate-me.png');
	imagefilter($img,IMG_FILTER_NEGATE);
	imagepng($img,'db-negative.png');
	imagedestroy($img);
}

The PHP -- Color to Sepia

//to black and white, then sepia
if(!file_exists('dw-sepia.png')) {
	$img = imagecreatefrompng('dw-manipulate-me.png');
	imagefilter($img,IMG_FILTER_GRAYSCALE);
	imagefilter($img,IMG_FILTER_COLORIZE,100,50,0);
	imagepng($img,'db-sepia.png');
	imagedestroy($img);
}

As you can see, PHP's GD library is a very competent, useful library. Though image libraries like ImageMagick get more credit than GD, GD is more than enough for the majority of designers and developers. Be sure to check out PHP image filters -- you can emboss images, fade images, and much more!

Discussion

  1. m
    August 31, 2009 @ 7:44 am

    PHP + GD is powerful stuff indeed! Big ups for your blog, David, love your posts, especially the mootools-related stuff. Has helped me a lot.

  2. August 31, 2009 @ 8:55 am

    What a coincidence I also crop like a farmer ;)

  3. August 31, 2009 @ 8:57 am

    On a more serious note… the only issue I have with GD is that it can’t resize or handle animated gifs correctly…that’s a really big disadvantage… if you can teach me to resize an animated gif with php, I’ll sure bow down low ;)

  4. August 31, 2009 @ 4:55 pm

    Hey, your Sepia-Logo looks really nice!
    You could use it in the case you make a redesign ;)

  5. August 31, 2009 @ 6:23 pm

    Case for IMagick/et al:
    – same function to opens all image formats
    – memory management (helpful for very large images)

    //to black and white, then sepia
    if(!file_exists(‘dw-sepia.png’)) {
    $img = Imagick(‘dw-manipulate-me.png’);
    $img->setImageColorspace(GRAYColorspace);
    $img->sepiaToneImage(80);
    $img->writeImage(‘db-sepia.png’);
    $img->destroy();
    }

  6. August 31, 2009 @ 9:22 pm

    Hey David,

    Great stuff, I’m a huge fan of using the GD library to help achieve certain effects with images. I hope you don’t think I’m link whoring, but I wrote a 2 part article for ThemeForest on exactly this topic and thought you might find it interesting:

    http://blog.themeforest.net/tutorials/fun-with-the-php-gd-library-part-2/

    Keep up the great work!

    -Drew

  7. August 31, 2009 @ 11:03 pm

    I’ve been wondering, but not enough to investigate, how to make images with rounded corners, like facebook — any idea how?

  8. September 1, 2009 @ 12:03 am

    I’ve used GD in the beginning, but as you go along with larger images, or other file formats, it’s better to leave GD alone and use ImageMagick. GD can also be a memory pig and the use for it is limited.
    With IMagick (in response to EmEhRKay) you can use masks to cut out your images (to make rounded corners). You can rotate, flip, flop, convert, resize, etc. within the blink of an eye. You can even create thumbnails of 500MB Illustrator documents if you want (not that that’s recommended) :-)

  9. September 1, 2009 @ 8:04 am

    Awesome Drew!

  10. September 16, 2009 @ 5:28 pm

    Nice fast way to deal with simple changes to images. Thanks.

  11. August 25, 2010 @ 12:31 am

    Do you know how to create “Virtual Product Samples” with any PHP script? are you aware of any such script which helps in creating 3D samples of various images and finally combined as one virtual sample.

Be Heard!

Share your thoughts with fellow developers of all skill levels! I want to hear from you!

Name*:
Email*:
Website:  
Wrap your code with <code> tags, f00!