THE NVL Maker

 找回密码
 成为开发者
搜索
查看: 46|回复: 1

[工具插件] 将特定文字层的文字进行替换并导出的Photoshop脚本

[复制链接]

15

主题

656

帖子

0

精华

管理员

Rank: 9Rank: 9Rank: 9

积分
677
发表于 2021-10-2 10:31:01 | 显示全部楼层 |阅读模式
  1. /*
  2. 将特定文字层的文字进行替换并导出成多个PNG文件的脚本

  3. 步骤:
  4. 1.打开一个PSD文件,并且选中一个文字图层
  5. 2.选择记录了文字内容的TXT
  6. 3.开始执行,将会依次把TXT内的每一行替换到特定文字层,并保存成PNG。格式为:文件名,要写的文字内容,第二个版本(如英文)的文字内容
  7. 4.当完成时会弹框提示

  8. 用法示例:
  9. ·一个包含文字图层的按钮PSD
  10. ·一个TXT内有“保存、读取、系统、退出”等等字样
  11. ·将按照按钮的文字样式生成“保存、读取、系统、退出”等按钮的PNG图片

  12. */


  13. //定义全局变数
  14. var destinationFolder; //目标文件夹
  15. var listTXTpath;//记载有文字内容的TXT

  16. var sourcePsd; //原PSD
  17. var sourceLayer; //原图层

  18. //判断是否存在文件和导出目录

  19. main();

  20. // main entry point
  21. function main()
  22. {
  23.         // got a valid document?
  24.         if( app.documents.length <= 0 )
  25.         {
  26.                 if(app.playbackDisplayDialogs != DialogModes.NO)
  27.                 {
  28.                         alert("至少需要打开一个文件哦!");
  29.                 }
  30.                 // quit, returning 'cancel' makes the actions palette not record our script
  31.             return 'cancel';
  32.     }

  33.         // ask for where the exported files should go
  34.         destinationFolder = Folder.selectDialog("请选择导出目录:");
  35.         if(!destinationFolder)
  36.         {
  37.                 return;
  38.         }
  39.         
  40.         // cache useful variables
  41.         sourcePsd=app.activeDocument;
  42.         sourcePsdName = sourcePsd.name; //取得当前文件名

  43.         sourceLayer=app.activeDocument.activeLayer;
  44.         
  45.         if (sourceLayer.kind == LayerKind.TEXT)
  46.         {
  47.                 var text=sourceLayer.textItem.contents;
  48.                
  49.                 //alert(text);
  50.                 listTXTpath= File.openDialog("请选择记录有替换文字的TXT文件", "TEXT Files:*.TXT");
  51.                 if(!listTXTpath)
  52.                 {
  53.                         return;
  54.                 }
  55.                 else
  56.                 {
  57.                         /* 开启档案 */  
  58.                         var txtFile = new File(listTXTpath);  
  59.                         if (!txtFile.open("r","",""))
  60.                         {  
  61.                                 alert("打不开TXT"); return;  
  62.                         }
  63.                            /* 读取内容 */  
  64.                                 var row;  
  65.                                 var i=0;
  66.                                 while(row=txtFile.readln())
  67.                                 {  
  68.                                         //alert(row);
  69.                                         //取得数组
  70.                                         var arr=row.split(",");
  71.                                         //默认多语言顺序(默认/繁中/英文/日文
  72.                                         var subfolder_arr=["","ui","ui_tchinese","ui_english","ui_japanese"];
  73.                                         var j;
  74.                                        
  75.                                         for (j=1;j<arr.length;j++)
  76.                                         {
  77.                                                 //存在多行,输出成分文件夹
  78.                                                 if (arr.length>2) changeText(arr[j],arr[0],subfolder_arr[j]);
  79.                                                 //只存在一行,输出到images文件夹
  80.                                                 else changeText(arr[j],arr[0],"ui");
  81.                                         }
  82.                                        
  83.                                         i++;
  84.                                 }
  85.                                 alert("搞定啦~");
  86.                 }                        
  87.                
  88.         }
  89.         else
  90.         {
  91.                 alert("选择的不是文字图层哟~");
  92.         }
  93.         
  94. }

  95. //替换文字内容
  96. function changeText(mytext,filename,folder)
  97. {
  98.         sourceLayer.textItem.contents=mytext;
  99.         exportAndSave(sourcePsd, filename,folder);
  100. }

  101. //导出并保存图片
  102. function exportAndSave(psd, fileName,folder)
  103. {
  104.         var folderpath = Folder(destinationFolder + "/"+folder+"/");
  105.         //Check if it exist, if not create it.
  106.         if(!folderpath.exists) folderpath.create();
  107.     // save the image
  108.         var pngFile = new File(destinationFolder + "/"+folder+"/" + fileName + ".png");
  109.         var pngSaveOptions = new PNGSaveOptions();
  110.         psd.saveAs(pngFile, pngSaveOptions, true, Extension.LOWERCASE);        
  111. }
复制代码
回复

使用道具 举报

15

主题

656

帖子

0

精华

管理员

Rank: 9Rank: 9Rank: 9

积分
677
 楼主| 发表于 2021-10-2 10:37:43 | 显示全部楼层
文字txt范例:
文件名1,语言1,语言2,语言3
文件名2,语言1,语言2,语言3

开始游戏-选中,开始游戏,START,開始游戲
读取游戏-选中,读取游戏,LOAD,讀取游戲
退出游戏-选中,退出游戏,EXIT,退出游戲
CG回放-选中,CG鉴赏,GALLERY,CG鑒賞
音乐回放-选中,音乐鉴赏,MUSIC,音樂鑒賞
语言设置-选中,语言设置,LANGUAGE,語言設置
游戏设置-选中,系统设置,OPTIONS,系統設置

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 成为开发者

本版积分规则

Archiver|手机版|nvlmaker

GMT+8, 2021-10-22 02:04 , Processed in 0.018012 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表