2006-12-11
失而復得的Photoshop加框程序
去年還是前年,用Javascript寫了一個圖片加框的程序,一直用得很順手。昨天竟然發現程序不見了!回頭想想,應該是Adobe CS升級到Adobe CS2時,我以為程序都備份了,就沒有保留——看完切爾西對阿森納的比賽,翻箱倒柜去找光盤,結果發現備份是備份了,但能找到的都是一個初級的版本,沒法用。極其郁悶。
最後一線希望是辦公室電腦里保存著一個備份,今早開工,第一件事情就是搜這東西。好彩真給我找到了!狡兔三窟,古人誠不余欺也!
// 单位设为像素 app.preferences.rulerUnits = Units.PIXELS; // 生成副本,加框流程将在副本中进行 var dupDoc = app.activeDocument.duplicate(); // 合并图层 dupDoc.flatten(); //画线和框 var black = new SolidColor(); black.rgb.red = black.rgb.green = black.rgb.blue = 0; var mygray = new SolidColor(); mygray.rgb.red = mygray.rgb.green = mygray.rgb.blue = 160; var white = new SolidColor(); white.rgb.red = white.rgb.green = white.rgb.blue = 255; backgroundColor = white; //backgroundColor = black; var marginW = 15; var marginH1 = 15; var marginH2 = 65; var newW = dupDoc.width + marginW + marginW; var newH = dupDoc.height + marginH1 + marginH1; // 四周加15 dupDoc.resizeCanvas(newW,newH); // 下边再加65 newH = newH + marginH2; dupDoc.resizeCanvas(newW,newH,AnchorPosition.TOPCENTER); // 增加Stroke图层 var layf = dupDoc.artLayers.add(); var selRef = dupDoc.selection; var selRegion = Array(Array(marginW, marginH1), Array(newW - marginW, marginH1), Array(newW - marginW, newH - marginH1 - marginH2), Array(marginW, newH - marginH1 - marginH2)); selRef.select(selRegion, SelectionType.REPLACE, 0, false); selRef.stroke(black, 2, StrokeLocation.INSIDE, ColorBlendMode.NORMAL, 100, false); var selRegion = Array(Array(0, 0), Array(newW, 0), Array(newW, newH), Array(0, newH)); selRef.select(selRegion, SelectionType.REPLACE, 0, false); selRef.stroke(black, 1, StrokeLocation.INSIDE, ColorBlendMode.NORMAL, 100, false); selRef.deselect(); // 放置LOGO var logofile = new File("e:/my documents/fishlogo on white.psd"); var logoDoc = open(logofile); logoDoc.mergeVisibleLayers(); logoDoc.resizeCanvas(newW,newH,AnchorPosition.BOTTOMRIGHT) logoDoc.layers[0].duplicate(dupDoc,ElementPlacement.PLACEATBEGINNING); logoDoc.close(SaveOptions.DONOTSAVECHANGES); displayDialogs = DialogModes.NO; var defaultRulerUnits = preferences.rulerUnits; preferences.rulerUnits = Units.PIXELS; var resRatio = dupDoc.resolution/72; if(resRatio!=1) { dupDoc.resizeImage(dupDoc.width.value,dupDoc.height.value,72); } //将一个长字串分解成单个字符串 function explodeArray(item) { var i=0; var Count=0; var tempString=new String(item); tempArray=new Array(1); do{ i=tempString.indexOf(":"); if(i>0) tempString=tempString.substr(i+1,tempString.length-i-1); i=tempString.indexOf(">"); if(i>0) { tempArray[Count]=tempString.substr(0,i); tempString=tempString.substr(i+1,tempString.length-i-1); Count ++; } i=tempString.indexOf("<"); if(i>0) { tempArray[Count]=tempString.substr(0,i); tempString=tempString.substr(i-1,tempString.length-i+1); Count ++; } }while (tempString.indexOf("")>0); tempArray[Count]=tempString; return tempArray; } //获取RAW保存的信息 var exifData = dupDoc.xmpMetadata.rawData.toString(); //将EXIF信息分成单个的相关信息 explodeArray(exifData); var model="";//机型 var exposureTime=""; //快门 var fNumber=""; //光圈 var ISOSpeedRatings=""; //ISO设置 var dateTimeOriginal=""; //拍摄时间 var FocalLength="";//焦距 var lensname="??"; //镜头名称 var creator="LittleFish"; //拍摄者。 var i=0; var j=0; var k=0; var dateArray1=""; var dateArray2=""; var monthsArray=""; var phoDate = ""; var phoTime = ""; var exposureBiasValue = ""; //曝光补偿 //Photoshop CS获取EXIF信息 //机型 for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n]; if(stringTemp.indexOf("Model")!=-1) { model = tempArray[n+1]; break; } } //快门速度 for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n]; if(stringTemp.indexOf("ExposureTime")!=-1) { exposureTime = tempArray[n+1]; break; } } //焦距 for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n]; if(stringTemp.indexOf("FocalLength")!=-1) { FocalLength = tempArray[n+1]; break; } } // 曝光补偿 for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n]; if(stringTemp.indexOf("ExposureBiasValue")!=-1) { exposureBiasValue = tempArray[n+1]; break; } } //光圈大小 for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n]; if(stringTemp.indexOf("FNumber")!=-1) { fNumber = tempArray[n+1]; break; } } //镜头名称 for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n]; if(stringTemp.indexOf("aux:Lens")!=-1) { lensname = tempArray[n+1]; break; } } //拍摄日期、时间 for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n]; if(stringTemp.indexOf("DateTimeOriginal")!=-1) { dateTimeOriginal = tempArray[n+1]; break; } } //ISO设置 for(n = 0; n < tempArray.length; n ++) { stringTemp=tempArray[n]; if(stringTemp.indexOf("ISOSpeedRatings")!=-1) { ISOSpeedRatings = " ISO"+tempArray[n+5]; break; } } //检查快门速度 dateArray1 = exposureTime.split("/"); j = dateArray1[0]; i = dateArray1[1]; if(j/i>1) exposureTime=parseInt(j/i)+"."+(j-parseInt(j/i)*i); else { i=parseInt(i/j); j=1; exposureTime=j+"/"+i; } //计算光圈大小 dateArray1 = fNumber.split("/"); i = dateArray1[0]; j = dateArray1[1]; if(j>1) fNumber=i/j; else fNumber=i; //检查曝光补偿 dateArray1 = exposureBiasValue.split("/"); i = dateArray1[0]; j = dateArray1[1]; if(i>0) exposureBiasValue="+"+(parseInt(i*10/j))/10; else exposureBiasValue=(parseInt(i*10/j))/10; //计算焦距 dateArray1 = FocalLength.split("/"); i = dateArray1[0]; j = dateArray1[1]; if(j>1) FocalLength=i/j; else FocalLength=i; //镜头名称 if (FocalLength>75) lensname="Nikkor 80-200"; else lensname="Tamron A09"; var infoLayer = dupDoc.artLayers.add(); infoLayer.kind = LayerKind.TEXT; var TI = infoLayer.textItem; //右对齐,如果左对齐可以省略下面这行 TI.justification = Justification.RIGHT; //标字的位置 TI.position = [dupDoc.width.value-60,dupDoc.height.value-50]; TI.contents = "Nikon D70 · " + lensname + " · " + exposureTime+" · F/" + fNumber + " · " + exposureBiasValue + "EV · " + FocalLength + "mm"; if (ISOSpeedRatings!="") { TI.contents = TI.contents + " ·" +ISOSpeedRatings; } //字体、字号、颜色等 TI.font = "Tahoma"; TI.size = 12; TI.color = mygray; TI.fauxBold = true;
没有评论:
发表评论
較新的文章
回到首頁
較舊的文章
订阅:
博文评论 (Atom)
test
没有评论:
发表评论