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

Don't innovate!

Gopinath had a shocking news for me this morning... the site that we were cloning--cloning with additional features and innovations had just released a new version, but with six features taken from our version. Had we released it some days before, we might have grabbed the innovation pride. But... The weirdest thing was that we're forced to clone including the landing page as in their previous version (and that is the reason for this delay), but when we're doing, they switched to our homepage version! Damn... It doesn't stop here. I was pacifying myself and pushing the software to be released by afternoon--at least then to claim the innovation card. Now Kanagavel has another "good news" for me, that we have to "tune" the product to be exactly as in PSD that would take another week to ship...

htmlspecialchars() bug in blogger.com

Found a strange htmlspecialchars() bug in blogger.com The title of my blog is <?php echo 'R. Rajesh Jeba Anbiah'; ?> , but blogger.com doesn't convert the html entities in the title when it spits out. Because of this bug, the title doesn't appear in my blog--browser just treats it as a broken html tag. This bug could have been fixed by using htmlspecialchars() , if it's powered by PHP . Also, noticed that this compose box eats any texts entered such. I gonna report this bug.