500 lines
15 KiB
Python
500 lines
15 KiB
Python
dxf27_jscode = """
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function 新的米样缩放()
|
||
{
|
||
var dialog = new Window("dialog");
|
||
|
||
dialog.text = "S/O样自动缩放";
|
||
//dialog.text = "SO自动米样拼贴";
|
||
dialog.orientation = "row";
|
||
dialog.alignChildren = ["left","top"];
|
||
dialog.spacing = 10;
|
||
dialog.margins = 16;
|
||
|
||
// GROUP1
|
||
// ======
|
||
var group1 = dialog.add("group", undefined, {name: "group1"});
|
||
group1.orientation = "column";
|
||
group1.alignChildren = ["fill","top"];
|
||
group1.spacing = 10;
|
||
group1.margins = 0;
|
||
|
||
// PANEL1
|
||
// ======
|
||
var panel1 = group1.add("panel", undefined, undefined, {name: "panel1"});
|
||
panel1.text = "源图像";
|
||
panel1.preferredSize.width = 388;
|
||
panel1.preferredSize.height = 205;
|
||
panel1.orientation = "column";
|
||
panel1.alignChildren = ["left","top"];
|
||
panel1.spacing = 10;
|
||
panel1.margins = 10;
|
||
|
||
var statictext1 = panel1.add("statictext", undefined, undefined, {name: "statictext1"});
|
||
statictext1.text = "使用:";
|
||
|
||
// GROUP2
|
||
// ======
|
||
var group2 = panel1.add("group", undefined, {name: "group2"});
|
||
group2.orientation = "row";
|
||
group2.alignChildren = ["left","center"];
|
||
group2.spacing = 10;
|
||
group2.margins = 0;
|
||
|
||
var button1 = group2.add("button", undefined, undefined, {name: "button1"});
|
||
button1.text = "选取";
|
||
|
||
var edittext1 = group2.add('edittext {properties: {name: "edittext1"}}');
|
||
edittext1.text = "[选择图像文件夹]";
|
||
edittext1.preferredSize.width = 300;
|
||
|
||
// PANEL2
|
||
// ======
|
||
var panel2 = group1.add("panel", undefined, undefined, {name: "panel2"});
|
||
panel2.text = "SO小样文档";
|
||
panel2.preferredSize.height = 160;
|
||
panel2.orientation = "column";
|
||
panel2.alignChildren = ["left","top"];
|
||
panel2.spacing = 10;
|
||
panel2.margins = 10;
|
||
|
||
var statictext2 = panel2.add("statictext", undefined, undefined, {name: "statictext2"});
|
||
statictext2.text = "设定:";
|
||
|
||
// GROUP3
|
||
// ======
|
||
var group3 = panel2.add("group", undefined, {name: "group3"});
|
||
group3.orientation = "row";
|
||
group3.alignChildren = ["left","center"];
|
||
group3.spacing = 10;
|
||
group3.margins = 0;
|
||
|
||
var statictext3 = group3.add("statictext", undefined, undefined, {name: "statictext3"});
|
||
statictext3.text = "宽度(cm):";
|
||
|
||
var edittext2 = group3.add('edittext {properties: {name: "edittext2"}}');
|
||
edittext2.preferredSize.width = 100;
|
||
|
||
var statictext4 = group3.add("statictext", undefined, undefined, {name: "statictext4"});
|
||
statictext4.text = "高度(cm):";
|
||
|
||
var edittext3 = group3.add('edittext {properties: {name: "edittext3"}}');
|
||
edittext3.preferredSize.width = 100;
|
||
|
||
// GROUP4
|
||
// ======
|
||
var group4 = panel2.add("group", undefined, {name: "group4"});
|
||
group4.orientation = "row";
|
||
group4.alignChildren = ["left","center"];
|
||
group4.spacing = 10;
|
||
group4.margins = 0;
|
||
|
||
// GROUP5
|
||
// ======
|
||
var group5 = group1.add("group", undefined, {name: "group5"});
|
||
group5.orientation = "row";
|
||
group5.alignChildren = ["left","center"];
|
||
group5.spacing = 10;
|
||
group5.margins = 0;
|
||
|
||
// PANEL3
|
||
// ======
|
||
|
||
|
||
// GROUP7
|
||
// ======
|
||
var group7 = dialog.add("group", undefined, {name: "group7"});
|
||
group7.orientation = "column";
|
||
group7.alignChildren = ["fill","top"];
|
||
group7.spacing = 10;
|
||
group7.margins = 0;
|
||
|
||
var ok = group7.add("button", undefined, undefined, {name: "ok"});
|
||
ok.text = "确认";
|
||
|
||
var cancel = group7.add("button", undefined, undefined, {name: "cancel"});
|
||
cancel.text = "取消";
|
||
|
||
|
||
|
||
|
||
|
||
button1.onClick = function () {
|
||
// 打开文件夹选择对话框
|
||
var selectedFolder = Folder.selectDialog("选择图像文件夹");
|
||
|
||
// 检查用户是否取消了选择
|
||
if (selectedFolder) {
|
||
// 将选择的文件夹路径显示在输入框中
|
||
edittext1.text = selectedFolder.fsName;
|
||
}
|
||
};
|
||
|
||
ok.onClick = function () {
|
||
app.preferences.rulerUnits = Units.PIXELS;
|
||
var 素材图片文件夹 = new Folder(edittext1.text);
|
||
var 遍历tiff = 素材图片文件夹.getFiles("*.*");
|
||
|
||
// 新建文件夹
|
||
var 新文件夹 = new Folder(edittext1.text + "/SO小样拼贴");
|
||
新文件夹.create();
|
||
var 新加字文件夹 = new Folder(edittext1.text + "/SO小样拼贴加字");
|
||
新加字文件夹.create();
|
||
|
||
|
||
宽度=Number (edittext2.text);
|
||
高度=Number (edittext3.text);
|
||
|
||
|
||
for (var i = 0; i < 遍历tiff.length; i++) {
|
||
if (遍历tiff[i] instanceof File) {
|
||
app.open(遍历tiff[i]);
|
||
app.activeDocument.flatten();
|
||
var 当前文档 = app.activeDocument;
|
||
var 当前文档名称 = 当前文档.name;
|
||
resizeImageToCm(宽度, 高度,200);
|
||
/*
|
||
图像大小()
|
||
预设图案(当前文档名称);
|
||
app.activeDocument.crop([UnitValue("0px"), UnitValue("0px"), UnitValue(宽度, "cm"), UnitValue(高度, "cm")]);
|
||
填充图案(当前文档名称);
|
||
app.activeDocument.flatten();
|
||
画布扩展()
|
||
*/
|
||
画布扩展()
|
||
// 保存新的图像文件到新建的文件夹中
|
||
var 保存路径 = 新文件夹 + "/" + 当前文档名称;
|
||
var tifSaveOpt = new TiffSaveOptions();
|
||
tifSaveOpt.imageCompression = TIFFEncoding.TIFFLZW;
|
||
tifSaveOpt.byteOrder = ByteOrder.IBM;
|
||
var asCopy = true;
|
||
app.activeDocument.saveAs(new File(保存路径), tifSaveOpt, asCopy);
|
||
创建并处理文本图层();
|
||
app.activeDocument.flatten();
|
||
var 保存路径 = 新加字文件夹 + "/" + 当前文档名称;
|
||
var tifSaveOpt = new TiffSaveOptions();
|
||
tifSaveOpt.imageCompression = TIFFEncoding.TIFFLZW;
|
||
tifSaveOpt.byteOrder = ByteOrder.IBM;
|
||
var asCopy = true;
|
||
app.activeDocument.saveAs(new File(保存路径), tifSaveOpt, asCopy);
|
||
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
}
|
||
}
|
||
//alert("小样连晒完成")
|
||
dialog.close();
|
||
// 创建并保存拼贴图像(新文件夹, 幅宽)
|
||
};
|
||
|
||
|
||
function resizeImageToCm(widthCm, heightCm, resolution) {
|
||
// 将厘米转换为像素
|
||
var widthInPixels = widthCm * (resolution / 2.54);
|
||
var heightInPixels = heightCm * (resolution / 2.54);
|
||
|
||
// 调整图像大小
|
||
app.activeDocument.resizeImage(widthInPixels, heightInPixels, resolution, ResampleMethod.NEARESTNEIGHBOR);
|
||
}
|
||
|
||
// 使用示例:将图像大小调整为 10cm x 15cm,分辨率为 300 像素/英寸
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function 预设图案(当前文档名称) //
|
||
{
|
||
|
||
var d = new ActionDescriptor();
|
||
var r = new ActionReference();
|
||
r.putClass(stringIDToTypeID("pattern"));
|
||
d.putReference(stringIDToTypeID("null"), r);
|
||
var r1 = new ActionReference();
|
||
r1.putProperty(stringIDToTypeID("property"), stringIDToTypeID("selection"));
|
||
r1.putEnumerated(stringIDToTypeID("document"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
|
||
d.putReference(stringIDToTypeID("using"), r1);
|
||
d.putString(stringIDToTypeID("name"), 当前文档名称);
|
||
executeAction(stringIDToTypeID("make"), d, DialogModes.NO);
|
||
|
||
}
|
||
|
||
|
||
function 填充图案(当前文档名称) //
|
||
{
|
||
|
||
var d = new ActionDescriptor();
|
||
var r = new ActionReference();
|
||
r.putClass(stringIDToTypeID("contentLayer"));
|
||
d.putReference(stringIDToTypeID("null"), r);
|
||
var d1 = new ActionDescriptor();
|
||
var d2 = new ActionDescriptor();
|
||
var d3 = new ActionDescriptor();
|
||
d3.putString(stringIDToTypeID("name"), 当前文档名称);
|
||
|
||
d2.putObject(stringIDToTypeID("pattern"), stringIDToTypeID("pattern"), d3);
|
||
d1.putObject(stringIDToTypeID("type"), stringIDToTypeID("patternLayer"), d2);
|
||
d.putObject(stringIDToTypeID("using"), stringIDToTypeID("contentLayer"), d1);
|
||
executeAction(stringIDToTypeID("make"), d, DialogModes.NO);
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
function 图像大小() //图像大小
|
||
{
|
||
|
||
var d = new ActionDescriptor();
|
||
d.putUnitDouble(stringIDToTypeID("resolution"), stringIDToTypeID("densityUnit"), 200);
|
||
d.putBoolean(stringIDToTypeID("scaleStyles"), true);
|
||
d.putBoolean(stringIDToTypeID("constrainProportions"), true);
|
||
d.putEnumerated(charIDToTypeID("Intr"), stringIDToTypeID("interpolationType"), stringIDToTypeID("nearestNeighbor"));
|
||
executeAction(stringIDToTypeID("imageSize"), d, DialogModes.NO);
|
||
}
|
||
|
||
|
||
|
||
function 画布扩展() //
|
||
{
|
||
|
||
var d = new ActionDescriptor();
|
||
d.putBoolean(stringIDToTypeID("relative"), true);
|
||
d.putUnitDouble(stringIDToTypeID("width"), stringIDToTypeID("distanceUnit"), 14.4);
|
||
d.putUnitDouble(stringIDToTypeID("height"), stringIDToTypeID("distanceUnit"), 14.4);
|
||
d.putEnumerated(stringIDToTypeID("horizontal"), stringIDToTypeID("horizontalLocation"), stringIDToTypeID("center"));
|
||
d.putEnumerated(stringIDToTypeID("vertical"), stringIDToTypeID("verticalLocation"), stringIDToTypeID("center"));
|
||
d.putEnumerated(stringIDToTypeID("canvasExtensionColorType"), stringIDToTypeID("canvasExtensionColorType"), stringIDToTypeID("color"));
|
||
var d1 = new ActionDescriptor();
|
||
d1.putDouble(stringIDToTypeID("red"), 255);
|
||
d1.putDouble(stringIDToTypeID("green"), 255);
|
||
d1.putDouble(stringIDToTypeID("blue"), 255);
|
||
d.putObject(stringIDToTypeID("canvasExtensionColor"), stringIDToTypeID("RGBColor"), d1);
|
||
executeAction(stringIDToTypeID("canvasSize"), d, DialogModes.NO);
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
function 创建并处理文本图层() {
|
||
// 新建图层
|
||
var textLayer = activeDocument.artLayers.add();
|
||
|
||
// 将新建图层变成文本图层
|
||
textLayer.kind = LayerKind.TEXT;
|
||
|
||
// 将文本内容改为当前文档name
|
||
textLayer.textItem.contents = activeDocument.name;
|
||
|
||
// 字体大小固定值
|
||
var 固定字体大小 = 30; // 例如,30像素
|
||
textLayer.textItem.size = 固定字体大小;
|
||
|
||
// 文字字体固定值
|
||
textLayer.textItem.font = "微软雅黑";
|
||
|
||
// 计算并调整文本位置
|
||
var x = activeDocument.width - textLayer.bounds[2];
|
||
var y = textLayer.bounds[1];
|
||
textLayer.translate(x, -y);
|
||
|
||
// 偏移
|
||
textLayer.translate(UnitValue("-1cm"), UnitValue("+0.5cm"));
|
||
|
||
// 复制并栅格化图层
|
||
var copyLayer = textLayer.duplicate();
|
||
copyLayer.rasterize(RasterizeType.ENTIRELAYER);
|
||
|
||
// 设置固定颜色值
|
||
var 固定颜色 = new SolidColor();
|
||
固定颜色.rgb.red = 255; // 红色分量
|
||
固定颜色.rgb.green = 255; // 绿色分量
|
||
固定颜色.rgb.blue = 255; // 蓝色分量
|
||
|
||
activeDocument.activeLayer = copyLayer;
|
||
activeDocument.selection.fill(固定颜色, ColorBlendMode.NORMAL, 100, true);
|
||
|
||
// 白边
|
||
activeDocument.activeLayer.applyMinimum(10);
|
||
后移一层()
|
||
向上选择()
|
||
向下合并()
|
||
名称更改字体()
|
||
缩小字体图层至文档一半()
|
||
多选背景()
|
||
底对齐()
|
||
水平居中对齐()
|
||
}
|
||
|
||
// 调用函数
|
||
|
||
|
||
|
||
|
||
|
||
function 后移一层() //
|
||
{
|
||
|
||
var d = new ActionDescriptor();
|
||
var r = new ActionReference();
|
||
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
|
||
d.putReference(stringIDToTypeID("null"), r);
|
||
var r1 = new ActionReference();
|
||
r1.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("previous"));
|
||
d.putReference(stringIDToTypeID("to"), r1);
|
||
executeAction(stringIDToTypeID("move"), d, DialogModes.NO);
|
||
|
||
}
|
||
|
||
function 向上选择() //
|
||
{
|
||
|
||
var d = new ActionDescriptor();
|
||
var r = new ActionReference();
|
||
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("forwardEnum"));
|
||
d.putReference(stringIDToTypeID("null"), r);
|
||
d.putBoolean(stringIDToTypeID("makeVisible"), false);
|
||
var list = new ActionList();
|
||
list.putInteger(19);
|
||
d.putList(stringIDToTypeID("layerID"), list);
|
||
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
|
||
|
||
}
|
||
function 向下合并() //向下合并
|
||
{
|
||
|
||
var d = new ActionDescriptor();
|
||
executeAction(stringIDToTypeID("mergeLayersNew"), d, DialogModes.NO);
|
||
|
||
}
|
||
|
||
|
||
function 名称更改字体() //名称更改
|
||
{
|
||
|
||
var d = new ActionDescriptor();
|
||
var r = new ActionReference();
|
||
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
|
||
d.putReference(stringIDToTypeID("null"), r);
|
||
var d1 = new ActionDescriptor();
|
||
d1.putString(stringIDToTypeID("name"), "字体");
|
||
d.putObject(stringIDToTypeID("to"), stringIDToTypeID("layer"), d1);
|
||
executeAction(stringIDToTypeID("set"), d, DialogModes.NO);
|
||
|
||
}
|
||
|
||
|
||
|
||
function 缩小字体图层至文档一半() {
|
||
var 文档 = app.activeDocument;
|
||
var 字体图层 = null;
|
||
|
||
// 遍历文档中的图层以找到名为"字体"的图层
|
||
for (var i = 0; i < 文档.artLayers.length; i++) {
|
||
if (文档.artLayers[i].name === "字体") {
|
||
字体图层 = 文档.artLayers[i];
|
||
break;
|
||
}
|
||
}
|
||
|
||
if (字体图层 !== null) {
|
||
// 获取文档的宽度的一半
|
||
var 目标宽度 = 文档.width / 2;
|
||
|
||
// 获取图层的当前宽度
|
||
var 图层宽度 = 字体图层.bounds[2] - 字体图层.bounds[0];
|
||
|
||
// 计算缩放比例
|
||
var 缩放比例 = 目标宽度 / 图层宽度 * 100;
|
||
|
||
// 缩放图层
|
||
字体图层.resize(缩放比例, 缩放比例, AnchorPosition.MIDDLECENTER);
|
||
} else {
|
||
alert("未找到名为'字体'的图层");
|
||
}
|
||
}
|
||
|
||
|
||
function 多选背景() //自由变换
|
||
{
|
||
|
||
var d = new ActionDescriptor();
|
||
var r = new ActionReference();
|
||
r.putName(stringIDToTypeID("layer"), "背景");
|
||
d.putReference(stringIDToTypeID("null"), r);
|
||
d.putEnumerated(stringIDToTypeID("selectionModifier"), stringIDToTypeID("selectionModifierType"), stringIDToTypeID("addToSelection"));
|
||
d.putBoolean(stringIDToTypeID("makeVisible"), false);
|
||
var list = new ActionList();
|
||
list.putInteger(1);
|
||
list.putInteger(13);
|
||
d.putList(stringIDToTypeID("layerID"), list);
|
||
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
function 底对齐() //底对齐
|
||
{
|
||
|
||
var d = new ActionDescriptor();
|
||
var r = new ActionReference();
|
||
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
|
||
d.putReference(stringIDToTypeID("null"), r);
|
||
d.putEnumerated(stringIDToTypeID("using"), stringIDToTypeID("alignDistributeSelector"), stringIDToTypeID("ADSBottoms"));
|
||
d.putBoolean(stringIDToTypeID("alignToCanvas"), false);
|
||
executeAction(stringIDToTypeID("align"), d, DialogModes.NO);
|
||
|
||
}
|
||
|
||
|
||
|
||
function 水平居中对齐() //水平居中对齐
|
||
{
|
||
|
||
var d = new ActionDescriptor();
|
||
var r = new ActionReference();
|
||
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
|
||
d.putReference(stringIDToTypeID("null"), r);
|
||
d.putEnumerated(stringIDToTypeID("using"), stringIDToTypeID("alignDistributeSelector"), stringIDToTypeID("ADSCentersH"));
|
||
d.putBoolean(stringIDToTypeID("alignToCanvas"), false);
|
||
executeAction(stringIDToTypeID("align"), d, DialogModes.NO);
|
||
|
||
}
|
||
|
||
|
||
|
||
// 设置单位为像素
|
||
|
||
|
||
|
||
|
||
|
||
dialog.show();
|
||
|
||
}
|
||
|
||
|
||
""" |