每次要手动去导出psd效果图是不是很麻烦的一件事情
然而php也能做到操作psd的强大功能
这里我们用到Imagick扩展来操作psd吧
安装ImageMagick (CentOS为例)
1、安装ImageMagick
# wget http://soft.vpser.net/web/imagemagick/ImageMagick-6.7.1-2.tar.gz
# tar zxvf ImageMagick-6.7.1-2.tar.gz
# cd ImageMagick-6.7.1-2/
# ./configure --prefix=/usr/local/imagemagick --disable-openmp
# make && make install
2、测试ImageMagick是否可以正常运行
# /usr/local/imagemagick/bin/convert -version
Version: ImageMagick 6.7.1-2 2016-06-29 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC
Features:
安装Imagick扩展
1、安装PHP扩展:imagick
# wget http://pecl.php.net/get/imagick-3.0.1.tgz
# tar zxvf imagick-3.0.1.tgz
# cd imagick-3.0.1/
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config --with-imagick=/usr/local/imagemagick
# make && make install
2、php加载imagick扩展
# vi /etc/php.ini
extension_dir = "/usr/lib64/php/modules"
extension="imagick.so"
# :wq! #保存退出
3、重启lnmp后查看phpinfo 是否安装成功
上代码啦
<?php
//导出psd为png
$im = new \Imagick ("php127.psd");
//$im->setImageIndex(0); //php7已废弃
$im->setIteratorIndex(0);
$im->stripImage(); //去除图片信息
$im->setImageCompressionQuality(70); //图片质量
$im->writeImage('php127.jpg'); //保存图片
//导出psd内的图层
$num_layers = $im->getNumberImages(); //获取图层数目
for ($i = 0, $num_layers = $im->getNumberImages(); $i < $num_layers; ++$i) {
$im->setImageIndex($i); //this
$im->setIteratorIndex($i); //or this is kinda redundant
$pagedata=$im->getImagePage();
//print("x,y: " + $pagedata["x"].", ".$pagedata["y"]."<br/>\n");
//print("w,h: " + $pagedata["width"].", ".$pagedata["height"]."<br/>\n");
foreach($im->getImageProperties("*") as $k => $v) print("$k: $v<br/>\n");
//export layer
//$im->writeImage('layer_' . $i . '.png'); //导出所有图层到单独的png文件
}
?>
原文连接 http://blog.php127.com/content/82 