如何解决如何通过Photoshop JavaScript将文本写入文本文件?
| 我看了一下《 Photoshop CS5脚本指南》和《 Photoshop CS5 JavaScript参考》,但找不到用于将文本写入纯文本文件的方法。有什么办法吗? 我想在文档中记录每个图层对象的“ 0”值。 有什么提示吗?解决方法
文件系统访问记录在Adobe的JavaScript工具指南(PDF)中。
下载PDF文件,然后查看“文件系统访问”部分。
, 这对我有用,以与原始文档相同的名称保存文本,但扩展名为
txt
:
function saveTxt(txt)
{
var Name = app.activeDocument.name.replace(/\\.[^\\.]+$/,\'\');
var Ext = decodeURI(app.activeDocument.name).replace(/^.*\\./,\'\');
if (Ext.toLowerCase() != \'psd\')
return;
var Path = app.activeDocument.path;
var saveFile = File(Path + \"/\" + Name +\".txt\");
if(saveFile.exists)
saveFile.remove();
saveFile.encoding = \"UTF8\";
saveFile.open(\"e\",\"TEXT\",\"????\");
saveFile.writeln(txt);
saveFile.close();
}
我不知道它是如何工作的,Photoshop脚本非常混乱,我一直将发现的一些脚本混合在一起,直到它起作用为止。
另外,如果有人需要此脚本,以下是一个脚本,该脚本还将活动文档另存为“ 3”图像:
function savePng()
{
var Name = app.activeDocument.name.replace(/\\.[^\\.]+$/,\'\');
if (Ext.toLowerCase() != \'psd\')
return;
var Path = app.activeDocument.path;
var saveFile = File(Path + \"/\" + Name +\".png\");
if(saveFile.exists)
saveFile.remove();
var o = new ExportOptionsSaveForWeb();
o.format = SaveDocumentType.PNG;
o.PNG8 = false;
o.transparency = true;
o.interlaced = false;
o.includeProfile = false;
activeDocument.exportDocument(saveFile,ExportType.SAVEFORWEB,o);
}
, 我发现缺少文档,但是想出了这作为在CS6中创建和写入新文件的方法:
var s = \"My string data here\";
var file = new File();
var fileNew = file.saveDlg(\"Save new file\");
fileNew.open(\"w\");
fileNew.write(s);
fileNew.close();
, 这是您需要的:
这很基本。它将遍历图层(没有图层集!),并保存每个图层的图层名称和图层边界。
app.preferences.rulerUnits = Units.PIXELS;
var srcDoc = app.activeDocument;
var numOfLayers = srcDoc.layers.length;
var results = \"\";
var fileName = srcDoc.name;
var docName = fileName.substring(0,fileName.length -4)
var theFile = srcDoc.path + \"/\" + docName + \".txt\";
for (var i = 0; i < numOfLayers ; i++)
{
var theLayer = srcDoc.layers[i];
var lb = getLayerBounds(theLayer).toString();
results += theLayer.name + \": \" + lb + \"\\n\";
}
writeTextFile(theFile,results)
alert(results);
function getLayerBounds(alayer)
{
var x1 = parseFloat(alayer.bounds[0])
var y1 = parseFloat(alayer.bounds[1])
var x2 = parseFloat(alayer.bounds[2])
var y2 = parseFloat(alayer.bounds[3])
return [x1,y1,x2,y2]
}
function writeTextFile(afilename,output)
{
var txtFile = new File(afilename);
txtFile.open(\"w\"); //
txtFile.writeln(output);
txtFile.close();
}
, 我已经阅读了文档,并结合了psycho brm's和corrin_m \'s答案的最佳部分。
我的答案也要检查错误。
如果文件存在,则不必删除它,因为用\“ w \”打开将覆盖现有文件。
/* =======================================================
* Saves file as text. Overwrites old file if exists.
* Returns empty string if no errors,otherwise error message.
* =======================================================*/
function saveAsTextFile(filePath,content) {
var saveFile = new File(filePath);
saveFile.encoding = \"UTF8\";
saveFile.open(\"w\");
if (saveFile.error != \"\")
return saveFile.error;
saveFile.write(content);
if (saveFile.error != \"\")
return saveFile.error;
saveFile.close();
if (saveFile.error != \"\")
return saveFile.error;
return \"\";
}
这就是我在脚本中使用该函数的方式
error = saveAsTextFile(filePath,content);
if (error === \"\") {
alert(filePath + \" saved OK.\");
}
else {
alert(\"Error saving \" + filePath + \"\\n\" + error);
}
顺便说一句,我将其保存在名为commom-code.jsx的单独文件中,并且可以在下面的行中包含它(单行注释是有意的)。
// @include \'common-code.jsx\'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。