该脚本用于photoshop,美术可以先用photoshop拼接图片,在加载该脚本导出xml格式的文件,该文件记录了每个小的图片坐标信息
// Copyright 2002-2003. Adobe Systems, Incorporated. All rights reserved. // Set the active layer to the last art layer of the active document, or the // first if the last is already active. function getLayerSetsIndex() { function getNumberLayers() { var ref = new ActionReference(); ref.putProperty( charIDToTypeID("Prpr") , charIDToTypeID("NmbL") ) ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); return executeActionGet(ref).getInteger(charIDToTypeID("NmbL")); } function hasBackground() { var ref = new ActionReference(); ref.putProperty( charIDToTypeID("Prpr"), charIDToTypeID( "Bckg" )); ref.putEnumerated(charIDToTypeID( "Lyr " ),charIDToTypeID( "Ordn" ),charIDToTypeID( "Back" ))//bottom Layer/background var desc = executeActionGet(ref); var res = desc.getBoolean(charIDToTypeID( "Bckg" )); return res }; function getLayerType(idx,prop) { var ref = new ActionReference(); ref.putIndex(charIDToTypeID( "Lyr " ), idx); var desc = executeActionGet(ref); var type = desc.getEnumerationValue(prop); var res = typeIDToStringID(type); return res }; var cnt = getNumberLayers()+1; var res = new Array(); if(hasBackground()) { var i = 0; } else { var i = 1; }; var prop = stringIDToTypeID("layerSection") for(i;i<cnt;i++) { var temp = getLayerType(i,prop); if(temp == "layerSectionStart" || temp == "layerSectionContent") res.push(i); }; return res; }; function makeActiveByIndex( idx, visible ) { var desc = new ActionDescriptor(); var ref = new ActionReference(); ref.putIndex(charIDToTypeID( "Lyr " ), idx) desc.putReference( charIDToTypeID( "null" ), ref ); desc.putBoolean( charIDToTypeID( "MkVs" ), visible ); executeAction( charIDToTypeID( "slct" ), desc, DialogModes.NO ); }; function getLayerBoundsByIndex( idx ) { var ref = new ActionReference(); ref.putProperty( charIDToTypeID("Prpr") , stringIDToTypeID( "bounds" )); ref.putIndex( charIDToTypeID( "Lyr " ), idx ); var desc = executeActionGet(ref).getObjectValue(stringIDToTypeID( "bounds" )); var bounds = [];// array of Numbers as pixels regardless of ruler bounds.push(desc.getUnitDoubleValue(stringIDToTypeID('left'))); bounds.push(desc.getUnitDoubleValue(stringIDToTypeID('top'))); bounds.push(desc.getUnitDoubleValue(stringIDToTypeID('right'))); bounds.push(desc.getUnitDoubleValue(stringIDToTypeID('bottom'))); return bounds; } function getLayerNameByIndex(idx) { var ref = new ActionReference(); ref.putProperty( charIDToTypeID("Prpr") , stringIDToTypeID( "name" )); ref.putIndex( charIDToTypeID( "Lyr " ), idx ); var name = executeActionGet(ref).getString(stringIDToTypeID( "name" )); return name; } function StringBuffer() { this._strings = []; if(arguments.length==1) { this._strings.push(arguments[0]); } } StringBuffer.prototype.Append = function(str) { this._strings.push(str); return this; } StringBuffer.prototype.ToString = function() { return this._strings.join(""); } var docRef = app.activeDocument; var saveRef = File.saveDialog( "Save as","Text Files:*.xml"); var savename = saveRef.name; savename = savename.replace(/.xml/, "") if (saveRef) { saveRef.open("w"); var groups = getLayerSetsIndex(); var strCotent = new StringBuffer() strCotent.Append("<?xml version= "+'/"'+'1.0' +'/"' +"?>"); strCotent.Append("\n"); strCotent.Append("<Imageset Name="); strCotent.Append(savename); strCotent.Append(" Imagefile="); strCotent.Append(savename); strCotent.Append(">\n") //for(var i = 0; i < groups.length; ++i) for(var i = groups.length -1; i >= 0; --i) { makeActiveByIndex( groups[i], true ); var activelayer = app.activeDocument.activeLayer var _layername = "" + activelayer var layertype = _layername.substr(1, 8) layername = getLayerNameByIndex(groups[i]) if (layertype == "ArtLayer") { var bound = getLayerBoundsByIndex(groups[i]) var boundrect1 = parseInt(bound[0]) var boundrect2 = parseInt(bound[1]) var boundrect3 = parseInt(bound[2]) var boundrect4 = parseInt(bound[3]) strCotent.Append("<Image Name="+ '/"'+ layername + '/"'); strCotent.Append(" XPos=" + boundrect1); strCotent.Append(" YPos=" + boundrect2); strCotent.Append(" Width=" + boundrect3); strCotent.Append(" Height=" + boundrect4); strCotent.Append('/>'); //var StringTemp = "Image" + '\t' + layername //strCotent.Append(StringTemp) } } strCotent.append('/n</ImageSet>'); saveRef.write(strCotent.ToString()) } saveRef.close(); alert("导出完成!"); docRef = null;
浙公网安备 33010602011771号