Skip to main content

Converting PSD with PHP/ImageMagick

After seeing feature rich options in Imagick PECL extension at Mikko Koppanen's (the author) website and also impressed with ImageMagick's features, I have decided to use it for the PSD to XHTML conversion website that I'm architecting and managing.

Since, the team wants programming help for converting PSD images, I have tried it (documentation is sparse on PSD handling)

Converting PSD to PNG/JPEG/etc


Note that, flattenImages() is needed for layered/multi-page PSD file.


<?php
$im = new Imagick('test.psd');
$im->flattenImages();
$im->setImageFormat('png');
$im->writeImage('test.png');
?>



Extracting PSD layers


One by one



<?php
$im = new Imagick('test.psd');
$im->setImageFormat('png');
for ($i = 0, $num_layers = $im->getNumberImages(); $i < $num_layers; ++$i) {
$im->setImageIndex($i);
$im->writeImage('layer' . $i . '.png');
}
?>


Note that, there is a better version below

In a single call with writeImages()



<?php
$im = new Imagick('test.psd');
$im->setImageFormat('png');
$im->writeImages('layer%d.png', true);
?>


Note: Second parameter of writeImages() is for adjoin

Bug

While doing so and comparing with the results of XnView, I have noted a same problem/issue as mentioned here in the forum--that is, most of the extracted layers/images are distorted. By the way, I have tried in WAMP and yet to try it in LAMP

Comments

Rinto Geroge said…
Great work Rajesh ,Thanks anyway
Rinto said…
Rajesh,I am experiencing some problem while exporting psd to png ,looses the resolution .Actually I converted 500 dpi psd to png ,but got 72 dpi png .How can keep the resolution ?
Rinto:

After second thought, you'd be better off with the command line "convert" instead of this extension

Popular posts from this blog

"A to Z of C" in the book Cimple (ISBN 0070260982)

I was just searching "A to Z of C" in Google Books and found that the book Cimple written by Sasant K Rout has used our code. The irony is that the book was published by Tata McGraw-Hill , who rejected us in final stage stating that it wants us to get endorsement from any IIT professor, which we couldn't. (For the sake of record... IIT Bangalore was linking & supporting "A to Z of C" for long time once it's published over the net; see old IIT page from web.archives.org ) It's just another incident to prove that success isn't a measurable unit; even failed attempts can be appreciated in any other forms.

BehaviorS.js - An alternative to Behaviour.js, event:Selectors and Low Pro libs for unobtrusive JavaScript programming

BehaviorS.js yet another unobtrusive JavaScript library similar to Behaviour.js and event:Selectors but in implementation uses hash based lookup without extending elements; so presumably it should be faster than the rest. The original script and idea was by JLof ; I extended it for DOMContentLoaded support, optimized a bit to avoid scanning of more depths, and added new rules support. I wanted to document the plug a long time and just got time to do it. For the time being BehaviorS.js is available here Update (2006-09-11) : Coralized the link to BehaviorS.js so as to save the load on free brinkster.com webpage Update (2006-09-27) : If the coralized link to BehaviorS.js doesn't work, use http://www21.brinkster.com/guideme/BehaviorS/ Update (2025-06-07) : Now available in https://github.com/rrjanbiah/behaviorsjs

Nadar rocks!

If you ask a single question and get 10-different indirect answers, then the person might be a westerner. If you get 5-different indirect answers, then the person might be from Indian corporate mafia. If you happen to read any sane corporate interviews, it might be either from  Shiv Nadar or Shivkumar (of Nokia). The reason must be that both are Tamilians. (On a personal note, I strongly believe that only Tamilians and Tamil TV channels have "to the point" discussions/communication). Having said, I keep following Shiv Nadar's interviews and news (Wikipedia says that he's alumnus of The American College!)... and recently found that he started Shiv Nadar University  ... Great story.