对于一个项目,我需要解析 Adobe Photoshop PSD 文件,以编程方式查找并替换图像图层,然后将其保存回 PSD 文件和/或将其导出为 PNG(或 JPEG)。我没有太多使用 Adobe Photoshop 的经验,但我认为这些类型的图层称为“智能图层”。
用例:
渲染样机预览图像
对于模型模板,替换层在 x 和 y 上 3d 倾斜。我添加了一张图片来说明这意味着什么。将来将创建额外的模型模板,这就是为什么我认为用常量值标记替换层是实现这一点的方法。
我不需要 HTTP 服务器/身份验证等方面的帮助,这部分很简单。我只是寻找一种替换图像层的方法。
PSD 文件是/将是为此特定项目定制的。根据图层名称(标签)确定要替换的正确图层是可接受的实现。
我已经查看了几个 NPM 包来完成这项工作,但无法获得功能原型。这个套餐似乎是最有前途的。
https://www.npmjs.com/package/psd
我目前有以下代码:
/* mockup.js */
var PSD = require('psd')
var psd = PSD.fromFile("mockup.psd")
var fs = require('fs')
psd.parse()
/* For easier reference */
var replacementLayer, file, fileBuffer
let tree = psd.tree()
let layers = tree.layer.node._children
for(let layer of layers) {
/* i named the layer 'replacementLayer' */
if(layer.name == 'replacementLayer') {
replacementLayer = layer
file = replacementLayer.layer.file
fileBuffer = replacementLayer.layer.file.data
}
}
/* replacementLayer = instanceof Layer
file = instanceof File with a property 'data' (data is a buffer)
fileBuffer = instanceof Buffer */
我尝试了各种打开图像文件并替换 PSD 中的 replacementLayer 的方法,但我无法让它工作。仅仅用新的 Buffer 对象覆盖属性是不够的。
将图像保存为 PNG 就这么简单
psd.image.saveAsPng('./output.png')
理想情况下,用于替换 replacementLayer 的图像应“填充”到图层的宽度和高度。
有什么想法吗?
ag-psd 可以处理这个问题,但是保存的 PSD 不会渲染最外层
很抱歉在没有帮助的情况下提出问题。 你的问题解决了吗?我和你一样有一些问题。 和你的很相似。 如果您达到方法,可以与我分享吗? 希望得到您的帮助。 谢谢你。