Parsing 如何读取Adobe Photoshop文件,并获取图层名/组名?
好的,所以我一直在浏览和寻找一个合适的答案,我的困境各地,到目前为止,我只找到了1/2的解决方案。这是: 简而言之,我的问题是如何允许上传PSD/AI文件,获取图层/组名称、图层样式等,并获取该信息并将其填入产品im构建的必需部分。首先,由于保密协议的条款,我不能完全讨论整个问题,但我有权在这里寻求帮助 我需要做的最终目标是获取文件中的信息并在其他地方使用它。例如,如果命名了一个层,我需要获取该信息并将其注册为产品中的有效层。我需要使用什么语言并不重要,因为我唯一不熟悉的语言是Ruby 通过文本编辑器或IDE打开PSD/AI文件时,可以看到文件名,如:App。那么,我应该如何,用什么语言来读取文件,获取图层名称,获取信息并在其他地方使用它呢 如果有人能给我指出正确的方向,那将是非常有帮助的,或者如果其他地方也回答了这个问题,那将是非常有帮助的 请记住,我应该使用的任何语言都必须能够在网页前端注册,如允许上传过程等 再次感谢Parsing 如何读取Adobe Photoshop文件,并获取图层名/组名?,parsing,converter,psd,Parsing,Converter,Psd,好的,所以我一直在浏览和寻找一个合适的答案,我的困境各地,到目前为止,我只找到了1/2的解决方案。这是: 简而言之,我的问题是如何允许上传PSD/AI文件,获取图层/组名称、图层样式等,并获取该信息并将其填入产品im构建的必需部分。首先,由于保密协议的条款,我不能完全讨论整个问题,但我有权在这里寻求帮助 我需要做的最终目标是获取文件中的信息并在其他地方使用它。例如,如果命名了一个层,我需要获取该信息并将其注册为产品中的有效层。我需要使用什么语言并不重要,因为我唯一不熟悉的语言是Ruby 通过文本
快乐编码 我想我没有完全回答你的问题,但希望这能帮助你: 首先,你也许可以通过Photoshop脚本得到你想要的东西,这就是JavaScript。实际上,它是ExtendScript,它与相同的东西非常接近。这可能不是理想的解决方案,因为您可能只想解析psd。就像我说的,这可能会给你指明正确的方向 其次,使文件本地化。在Photoshop脚本中,以这种方式查看图层名称更容易。如果那不合适,你就得找个成年人帮忙 第三,当你对图层进行分组时,Photoshop并不能使事情变得简单,你必须有一个递归函数,在所有图层上循环,然后才能得到你想要的。在大型PSD文件上,这可能会很慢 对于只有两层的简单PSD,请使用:
var numOfLayers = srcDoc.layers.length;
// main loop
for (var i = numOfLayers -1; i >= 0 ; i--)
{
var thisLayer = srcDoc.layers[i];
doStuff(thisLayer);
}
function doStuff(alayer)
{
// do stuff!
alert(alayer.name)
}
这是直截了当的-您可以在运行时将层名称添加到数组中。
对于更复杂的PSD文件,您需要递归函数:
// group layer vegetables
var allLayers = new Array();
var theLayers = collectAllLayers(app.activeDocument, 0);
function doStuff(alayer)
{
// do stuff!
alert(alayer.name)
}
// function collect all layers
function collectAllLayers (theParent, level)
{
for (var m = theParent.layers.length - 1; m >= 0; m--)
{
var theLayer = theParent.layers[m];
// apply the function to layersets;
if (theLayer.typename == "ArtLayer")
{
// find the art layers
doStuff(theLayer)
}
else
{
allLayers.push(level + theLayer.name);
collectAllLayers(theLayer, level + 1)
}
}
}
谢谢你的回复!不过,首先,上传将是所有客户端,而不是服务器端。某些设计的大小超过1gb或更大。因此,这将是所有客户端。你的回答给了我一些新的见解,但并不完全是我正在寻找或尚未尝试的。大多数情况下,我需要抓取图层名称、颜色、样式,例如标签,然后获取这些信息,并将产品注册为标签。