各位程序员朋友们!
我正在尝试构建一个工具,用于替换 .psd 文件中的图像。目前,我正在尝试使用 imagick/ImageMagic 扩展的 PHP 脚本进行探索。
如果有人能够帮助我使用 imagick 实现这个功能,或者指导我寻找其他解决方案,我将不胜感激。
问题是图像无法被替换。我已经尝试使用 setImage
和 addImage
两种方法。如果我在 if 语句中导出文件,它会显示新添加的图像,但是输出结果中并没有反映出这些变化。
以下是我尝试过的代码:
$src = Storage::path('file.psd');
$psd = new Imagick($src);
foreach ($psd as $index => $layer) {
// Skip the first layer
if (! $index) {
continue;
}
$imageProperties = $layer->getImageProperties();
$label = $imageProperties['label'] ?? '';
if (str($label)->lower()->startsWith(['#'])) {
$layer->removeImage();
$layer->setImage(new Imagick(Storage::path('image.png')));
}
}
$psd->mergeImageLayers(Imagick::LAYERMETHOD_MERGE);
$psd->setImageFormat('png');
$psd->writeImage(Storage::path('output.png'));
$psd->clear();
$psd->destroy();
这是一个我尝试过的示例文件:https://mega.nz/file/H5FhQRRZ#Ta06TySXU5FIKAtx0DN87E3tjN2QSDoa3DAx0AQQbZ0