gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 20:31:39 32 4
gpt4 key购买 nike

我正在使用 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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com