概要
- Photoshop/Illustrator で画像に連番を付けて保存する。
- ドキュメント中のテキストレイヤ(Photoshop)またはテキストフレーム(Illustrator)に連番を入れてEPS形式で保存します。
- 連番が入れられるのは「ID」という名前を持つテキストレイヤまたはテキストフレームです。
- Photoshop CS3/CS4 では途中で中断できますが、Illustrator CS3/CS4 では中断ボタンは利かず最後まで処理が止まりません。
- Photoshop CS3/CS4, Illustrator CS3/CS4 で動作確認。(2010/03/09)
ソース
-
createSerialImg.zip
// ドキュメント中のオブジェクト名"ID"に連番を入れてEPS形式で保存 // by TakeAsh // 2010/03/09 #target 'Photoshop' #includepath "~/Local Settings/Application Data/Adobe/JavaScript/" #include "ominoDialogMaker.jsx" // http://omino.com/sw/ominoAdobeScriptsSuite/shared/ominoDialogMaker.jsx #include "packZero.js" var prefix = 'Pref'; var start = 1; var goal = 10; var destFolder = '~'; var closeAtFinish = true; var keta = 5; var appPhotoshop = 'Adobe Photoshop'; var appIllustrator = 'Adobe Illustrator'; if ( app.name != appPhotoshop && app.name != appIllustrator ){ exit(); // エラーになる } switch( app.name ){ case appPhotoshop: // ダイアログさない、アラートは出す。 app.displayDialog = DialogModes.ERROR; break; case appIllustrator: // ダイアログ出さない app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS; break; } var omd = newOminoDialog("連番保存"); omd.boxedText( 2, 'ドキュメント中のオブジェクト名"ID"に連番を入れてEPS形式で保存します。\n' + 'Photoshop CS3/CS4は中断できますが、Illustrator CS3/CS4は中断が利きません。' ); omd.string( '接頭辞', 'prefix', prefix ); omd.number( '開始値', 'start', start ); omd.number( '終了値', 'goal', goal ); omd.selectFolder( '保存先フォルダ', 'destFolder', destFolder, 'EPS ファイルの保存先フォルダを選択してください。' ); omd.checkbox( '', 'closeAtFinish', closeAtFinish, '終了時にドキュメントを破棄' ); var result = omd.run(); if ( result != null ){ prefix = result[ 'prefix' ]; start = result[ 'start' ]; goal = result[ 'goal' ]; destFolder = result[ 'destFolder' ]; closeAtFinish = result[ 'closeAtFinish' ]; try { var obj_ID = null; switch( app.name ){ case appPhotoshop: var objs = activeDocument.artLayers; for( var i=0; i<objs.length; ++i ){ if ( objs[i].kind == LayerKind.TEXT && objs[i].name == 'ID' ){ obj_ID = objs[i].textItem; break; } } break; case appIllustrator: var objs = activeDocument.textFrames; for( i=0; i<objs.length; i++ ){ if ( objs[i].name == 'ID' ){ obj_ID = objs[i]; break; } } break; } if ( obj_ID != null ){ var win = new Window( 'palette', '連番保存', [100, 100, 210, 170] ); var postfix = '/' + packZero( goal, keta ) win.msg = win.add( 'statictext', [8, 8, 100, 30], packZero( start, keta ) + postfix ); win.abort = win.add( 'button', [8,30, 100, 56], '中断' ); win.abort.onClick = function(){ this.parent.aborted = true; }; win.aborted = false; win.show(); var options = this.getOptions(); switch( app.name ){ case appPhotoshop: for(var i=start; i<=goal; ++i){ if ( win.aborted ){ break; } var IDStr = packZero( i, keta ); win.msg.text = IDStr + postfix; obj_ID.contents = IDStr; var targetFile = this.getTargetFile( prefix+IDStr, '.eps', destFolder); activeDocument.saveAs( targetFile, options, true, Extension.LOWERCASE ); } break; case appIllustrator: for( var i=start; i<=goal; ++i ){ if ( win.aborted ){ break; } var IDStr = packZero( i, keta ); win.msg.text = IDStr + postfix; obj_ID.contents = IDStr; var targetFile = this.getTargetFile( prefix+IDStr, '.eps', destFolder); activeDocument.saveAs( targetFile, options ); } break; } if ( win.aborted ){ alert( '中断されました。' ); } else { if ( closeAtFinish ){ app.activeDocument.close(SaveOptions.DONOTSAVECHANGES); } } } else { alert('名前が"ID"のオブジェクトがありません。'); } } catch(e) { alert( e.message, 'スクリプト警告', true); } } switch( app.name ){ case appPhotoshop: // ダイアログもアラートも出す app.displayDialog = DialogModes.ALL; break; case appIllustrator: // ダイアログ出す app.userInteractionLevel = UserInteractionLevel.DISPLAYALERTS; break; } function getOptions() { // Create the required options object var options = new EPSSaveOptions(); switch( app.name ){ case appPhotoshop: options.embedColorProfile = true; options.encoding = SaveEncoding.JPEGHIGH; options.halftoneScreen = false; options.interpolation = false; options.preview = Preview.MACOSJPEG; options.psColorManagement = false; options.transferFunction = false; options.transparentWhites = false; options.vectorData = true; break; case appIllustrator: options.compatibility = Compatibility.ILLUSTRATOR13; options.cmykPostScript = true; options.embedAllFonts = true; options.embedLinkedFiles = true; options.includeDocumentThumbnails = false; options.overprint = PDFOverprint.PRESERVEPDFOVERPRINT; //options.preview = false; break; } return options; } /** Returns the file to save or export the document into. @param docName the name of the document @param ext the extension the file extension to be applied @param destFolder the output folder @return File object */ function getTargetFile(docName, ext, destFolder) { var newName = ''; // if name has no dot (and hence no extension), // just append the extension if (docName.indexOf('.') < 0) { newName = docName + ext; } else { var dot = docName.lastIndexOf('.'); newName += docName.substring(0, dot); newName += ext; } // Create the file object to save to var myFile = new File( destFolder + '/' + newName ); // Preflight access rights if (myFile.open('w')) { myFile.close(); } else { throw new Error('アクセスは拒否されました。'); } return myFile; } // EOF