PHP转换psd到jpg,选择图像层


PHP convert psd to jpg, selecting image layers

我希望能够从。psd图像中选择哪些图层合并到最终的。jpg输出图像。

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

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

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

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

虽然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');

可以使用

访问第三层
test.psd[3]

试试:

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