当前位置:   article > 正文

Flash:快速导出png(jsfl)_fla批量转图片

fla批量转图片

不知道现在还有多少人在用Flash制作内容,如果你也想快速提取Flash中的矢量图形成png,不妨试试这个脚本。

 

  • 创建脚本

1.创建一个txt文本文档

1.将下面的代码复制粘贴到txt中,并保存

3.将".txt"扩展名改为".jsfl"

  1. //导出所选到png v1.3
  2. //将flash所选内容保存为png
  3. // 素材将保存到脚本目录下的 JSFL 文件夹里
  4. // 支持设置导出的素材名称
  5. // 支持将素材放大导出
  6. //将保存位置设置为脚本同目录下的 JSFL 文件夹
  7. var folder = getFolder(fl.scriptURI) + "JSFL/"
  8. FLfile.createFolder(folder);
  9. start();
  10. function start()
  11. {
  12. //打开的文档
  13. var doc = fl.getDocumentDOM();
  14. if( !doc )
  15. {
  16. alert("请打开fla文档");
  17. return;
  18. }
  19. //判断是否有所选内容
  20. if( doc.selection.length == 0 )
  21. {
  22. alert("请在舞台选择一个元素");
  23. return;
  24. }
  25. //获取选中的元件名称
  26. var eleName = "";
  27. if (doc.selection.length == 1) {
  28. var ele = doc.selection[0];
  29. if (ele.elementType == "instance") {
  30. eleName = ele.libraryItem.name;
  31. // 如果是库文件,则只取元件名
  32. var index = eleName.lastIndexOf("/");
  33. if (index != -1)
  34. eleName = eleName.substring(index + 1);
  35. } else {
  36. eleName = doc.selection[0].name;
  37. }
  38. }
  39. //交互提示
  40. var inputName = prompt("请输入素材的名字", eleName)
  41. if(inputName==null) return
  42. eleName = inputName
  43. var inputRate = prompt("请输入放大倍数", 1)
  44. if(inputRate==null) return
  45. inputRate = parseFloat(inputRate)
  46. if (!inputRate) inputRate = 1
  47. //拷贝所选内容到新的文档
  48. doc.clipCopy();
  49. //创建新文档
  50. var exportDoc = fl.createDocument();
  51. exportDoc.clipPaste();
  52. exportDoc.selectAll();
  53. // 转成元件 并进行缩放
  54. exportDoc.convertToSymbol("graphic", "eClip", "top left")
  55. var clip = exportDoc.selection[0];
  56. clip.scaleX = inputRate;
  57. clip.scaleY = inputRate;
  58. //将元件转成位图,解决边界计算比实际略小的情况
  59. exportDoc.convertSelectionToBitmap();
  60. //设置舞台大小 将图片尺寸调整为偶数
  61. var bm = exportDoc.selection[0];
  62. bm.x = 0;
  63. bm.y = 0;
  64. bmW = Math.ceil(bm.width);
  65. bmH = Math.ceil(bm.height);
  66. bmW = bmW % 2 == 0 ? bmW : bmW + 1
  67. bmH = bmH % 2 == 0 ? bmH : bmH + 1
  68. exportDoc.width = bmW;
  69. exportDoc.height = bmH;
  70. var timeStr = getTimeStr();
  71. var pngName = folder + timeStr + "_" + eleName + ".png";
  72. //去掉文件的扩展名
  73. //pngName = pngName.replace("fla","");
  74. //pngName = pngName.replace(".xfl","");
  75. exportDoc.selectNone();
  76. exportDoc.exportPNG(pngName,true,true);
  77. exportDoc.close(false);
  78. var showStr = "☀☀☀导出成功☀☀☀\n " + pngName;
  79. showStr = showStr.replace("file:///","");
  80. showStr = showStr.replace("|/",":/");
  81. alert( showStr );
  82. }
  83. function getFolder(str)
  84. {
  85. var index = str.lastIndexOf("/");
  86. if (index != -1)
  87. str = str.substring(0,index+1);
  88. return str;
  89. }
  90. function getFile(str)
  91. {
  92. var index = str.lastIndexOf("/");
  93. if (index != -1)
  94. str = str.substring(index + 1);
  95. return str;
  96. }
  97. // 20180803
  98. function getTimeStr()
  99. {
  100. var today = new Date();
  101. var y = checkTime(today.getFullYear());
  102. var m = checkTime(today.getMonth() + 1);
  103. var d = checkTime(today.getDate())
  104. return y + m + d;
  105. }
  106. function checkTime(i) {
  107. if (i < 10) i = "0" + i;
  108. return i.toString()
  109. }
  • 如何使用

1.在Flash中选中你要导出的内容

2.双击jsfl脚本,运行成功后会出现两个弹框

3.第一个弹框,输入导出的图片名称,点击确定按钮

4.第二个弹框,输入放大倍数,点击确定按钮

5.看到如下提示框则表示成功

 

  • 常见问题

文件保存在哪?

png文件将会导出到和jsfl脚本同目录下的jsfl文件夹里,所以移动jsfl文件,导出目录也会随着改变。

另外jsfl在macOS下面也管用的哦!

 

为什么有时导出的图片不正确?

如果发现导出的尺寸不对,则需要重置下导出设置。重置方法:

1.执行 文件(F)—导出(E)—导出图像(E)…

2.在弹出的 “导出PNG”弹框中,设置 分辨率为 “72dpi”,包含为“完整文档大小”

为什么双击jsfl没有反应?

在win10下,双击jsfl脚本可能没有反应,此时还有另外两种运行脚本的方式。

方式1:Flash里面的运行命令

其实更推荐使用这种方式打开jsfl脚本,执行改命令后会弹出一个文件对话框让你选择脚本文件,这个对话框的默认路径是独立的,如果脚本是放在固定位置,每次运行这个命令可以第一时间找到jsfl脚本文件。

方式2:脚本编辑模式下运行

  执行 文件(F)—打开(O)(快捷键 ctrl+O),选择jsfl文件

  此时可以在flash里面编辑jsfl脚本,点击三角形形状的“运行脚本”按钮就可以了

 

2020-04-12 更新:

导png功能已经写成插件了,使用更方便,有需求的不妨试试

https://github.com/hufang360/FlashTool

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/399832
推荐阅读
  

闽ICP备14008679号