PHP将psd转换为jpg,选择图像层

时间:2014-06-09 14:47:55

标签: php image layer imagick psd

我希望能够选择.PSD图像中的哪些图层合并到最终的.JPG输出图像中。

我可以合并图像中的所有图层:

$im = new Imagick('test.psd');
$im->flattenImages();
$im->setImageFormat('jpg');
$im->writeImage('test.jpg');

然而.psd包含大约10个图层,我希望能够指定哪些特定图层应该合并在一起,以生成最终图像。

例如,我想只合并图层编号3,5和10或名称为“RED”,“GREEN”,“BLUE”的图层

2 个答案:

答案 0 :(得分:5)

虽然hsz的答案是正确的,并且是图像非常大的最佳方式,但它确实需要您提前知道要合并的图层。

您可以使用setIteratorIndex访问各个图层并将其添加到输出图像,以编程方式执行相同的操作。

    $imagick = new \Imagick(realpath("../images/LayerTest.psd"));

    $output = new \Imagick();
    $imagick->setIteratorIndex(1);
    $output->addImage($imagick->getimage());

    $imagick->setIteratorIndex(2);
    $output->addImage($imagick->getimage());

    $merged = @$output->flattenimages();
    $merged->setImageFormat('jpg');
    $merged->writeImage('test.jpg');

答案 1 :(得分:3)

您可以使用

访问第三层
test.psd[3]

试试:

$im = new Imagick(array('test.psd[3]', 'test.psd[5]', 'test.psd[10]'));