javascript - JSFL - 批量导出不同尺寸的PNG

标签 javascript export jsfl

我正在使用 Flash CS6,我需要从 9 种不同尺寸的矢量图形中保存 32 位 PNG。

16
32
36
48
72
114
128
150
480

如何在 JSFL 中编写批量导出脚本?

JSFL Docs (PDF)

最佳答案

我有一个脚本可以完成您想要做的事情。您似乎并没有真正尝试编写任何代码或展示任何研究尝试,因此如果您最终使用此脚本,我将不胜感激。

在舞台上选择一个影片剪辑,然后运行此命令。

Andrew Doll - Multiple Size PNG Exporter

注意:在运行此脚本之前,请使用所需的 PNG 导出设置导出一张 PNG 图像。

fl.getDocumentDOM.exportPNG() 接受 3 个参数。第一个是文件名字符串。第二个是一个 bool 值,指定是使用当前 PNG 发布设置 (true) 还是显示“导出 PNG”对话框 (false)。第三个是一个 bool 值,指定是仅导出当前帧 (true) 还是导出所有帧,其中每个帧作为单独的 PNG 文件 (false)。

由于此脚本将第二个参数设置为 true,因此只需确保 PNG 导出设置已设置为 32 位 PNG。

// Multiple Size PNG Exporter
// Copyright © 2014 Andrew Doll
// http://www.andrewdollanimation.com/

/* NOTE:Before running this script export one PNG image using the desired PNG export settings.  fl.getDocumentDOM.exportPNG() accepts 3 
** paramaters. The first is the string for the file name.  The second is a Boolean value that specifies whether to use the current PNG 
** publish settings (true) or to display the Export PNG dialog box (false).  The third is a Boolean value that specifies whether to export 
** only the current frame (true) or to export all frames, with each frame as a separate PNG file (false).  Since this script sets the
** second paramater to true just be sure that the PNG export settings are already set to 32 bit PNG.
*/

// Check to see if there is a file open first.
var dom = fl.getDocumentDOM();
if (dom == null)
{
    alert("Please open a file.");
}
else
{
    var sel = [];
    var exportSizeArray = [];
    var folderURI = "";
    var folderLocation = "";
    var pngFileName = "";
    var URI = "";
    var selWidth;
    var selHeight;
    var sideToUse;
    var scaleAmount;

    function setupExportFolder()
    {
        // Create a folder and file name for the PNG files.
        folderLocation = fl.browseForFolderURL("Select a folder.");
        if(folderLocation != null)
        {
            folderURI = folderLocation + "/PNG Exports";
            FLfile.createFolder(folderURI);
            pngFileName = prompt("What would you like to name the png files?");
        }
    }

    // Check if a movie clip on the stage is selected to export PNG images.
    var selectionCheck = dom.selection;
    if(!selectionCheck || !selectionCheck.length)
    {
        alert("Please select a movie clip on the stage.");
    }
    else
    {
        // Set up export sizes in this array.
        exportSizeArray = [16, 32, 64, 128, 256, 512, 1024];

        // Setup export folder
        setupExportFolder();

        if(folderLocation != null && pngFileName != null)
        {
            // Copy the selected artwork from the stage.
            sel = dom.selection[0];
            dom.clipCopy();

            // Calculate the amount to scale the symbol by based on the longest side.
            function calculateScaleAmount(selWidth, selHeight)
            {
                if(selWidth >= selHeight)
                {
                    sideToUse = selWidth;
                }
                else
                {
                    sideToUse = selHeight;
                }
                scaleAmount = exportSizeArray[i]/sideToUse;
                return scaleAmount;
            }

            // Set the width and height of the symbol. Handle this with the size array.
            for (var i = 0; i < exportSizeArray.length; i++)
            {
                // Create a new FLA document.
                fl.createDocument();
                dom = fl.getDocumentDOM();

                // Resize the document to the current export size.
                dom.width = exportSizeArray[i];
                dom.height = exportSizeArray[i];

                // Paste the artwork to the stage.
                dom.clipPaste(true);
                sel = dom.selection[0];
                dom.setAlignToDocument(true);
                selWidth = sel.width;
                selHeight = sel.height;
                calculateScaleAmount(selWidth, selHeight);

                // Scale the artwork to the size of the stage based on the largest side.
                dom.scaleSelection(scaleAmount, scaleAmount, "center");

                // Align to the center of the stage.
                dom.align("vertical center", true);
                dom.align("horizontal center", true);

                // Output the image.
                URI = folderURI + "/" + pngFileName + "_" + exportSizeArray[i] + " x " + exportSizeArray[i] + "_";
                dom.exportPNG(URI, true, true);

                // Close the temporary FLA without saving.
                dom.close(false);
            }
        }
    }
}

关于javascript - JSFL - 批量导出不同尺寸的PNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16244060/

相关文章:

mysql - 如何从 mysql 导出单个触发器?

javascript - 如何使用es6 import代替require?

ms-access - 使用带参数的 Access 查询导出为文本

actionscript-3 - 如何在 Flash CS3 中访问群组成员

flash-cs5 - 在 ExtendScript for Flash CS5 中调试 jsfl

javascript - 汉堡菜单对于网格尺寸可见

javascript - 使用 jQuery 和表单插件引用对表单数据 POST 的 JSON 响应

javascript - 在 Javascript 中向自定义对象添加方法

javascript - UglifyJS 保留用户脚本 header

macos - 将网络服务器嵌入碳包