javascript に関する質問です。


以前Adobe photoshop に関するJavascriptを作成していただいたのですが、

今回そちらを少し変えていただいたScriptを書いていただきたく質問させていただきました。

以下が前回の質問文章です。

http://q.hatena.ne.jp/1231138162

今回は前回のをちょっとだけ変えて、更に3パターンの形式を作成したいと考えています。

http://oskuni7.sakura.ne.jp/hatena/question19/question19.htm

今回作成する上でですが

●自動シャープ機能を省きます。
●プログラムに対する要望ですが、1枚目の加工、2枚目の加工、3枚目(4枚を1枚に加工するか?1枚を1枚に加工するか?)の加工と順番に行われていき、写真ごとにサイズの変更とフォルダの場所指定変更ができる型を作成していただければ自分で調整できそうな気がするので型を望んでおります。

お手数をおかけしますがお時間があるかたおりましたらよろしくお願いいたします。





回答の条件
  • 1人2回まで
  • 登録:2009/02/03 21:10:45
  • 終了:2009/02/03 22:52:53

ベストアンサー

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912009/02/03 21:49:56

ポイント100pt

>写真ごとにサイズの変更とフォルダの場所指定変更ができる型を作成していただければ

>自分で調整できそうな気がするので型を望んでおります。

前回のはそのように作ったつもりだったのですが、もう少しわかりやすくサイズも引数にしてみました。


下記をベースとして、

// Global define

// ★★★実際のパスに変更してください。
var rootFolder = "C:/Users/yoshi/Desktop/adobe script/";

var startRulerUnits = preferences.rulerUnits;
var startTypeUnits = preferences.typeUnits;
var startDisplayDialogs = displayDialogs;

// Set
preferences.rulerUnits = Units.PIXELS;
preferences.typeUnits = TypeUnits.PIXELS;
displayDialogs = DialogModes.NO;

//  Jpeg Option
var jpegOpt = new JPEGSaveOptions();
jpegOpt.embedColorProfile = true;
jpegOpt.quality = 2;
jpegOpt.formatOptions = FormatOptions.PROGRESSIVE;
jpegOpt.scans = 3;
jpegOpt.matte = MatteType.NONE;

//  画像サイズ変換関数
function SizeConvert( srcFolder, dstFolder, xsize, ysize ) {
    var folderObj = Folder(rootFolder + srcFolder );
    var fileList = folderObj.getFiles();
    for( var i=0 ; i< fileList.length ; i++  ) {
        srcFileObj = new File( fileList[i].fsName );
        var dFilePath = fileList[i].fsName.replace( srcFolder, dstFolder );
        var dstFileObj = new File( dFilePath );
        srcFileObj.copy( dstFileObj );
        var cPic = open(dstFileObj);
        cPic.activeLayer.applySharpen();
        cPic.resizeImage(xsize, ysize);
        cPic.saveAs(dstFileObj, jpegOpt, true, Extension.LOWERCASE);
        cPic.close(SaveOptions.DONOTSAVECHANGES);
    }
}

//  画像結合関数
function MergeImage( srcFolderArray, dstFolder, xsize, ysize ) {
    var folderObj = Folder(rootFolder + srcFolderArray[0] );
    var selRegion = Array( Array(0, 0), Array(1, 0), Array(1, 1), Array(0, 1), Array(0, 0));
    var fileList = folderObj.getFiles();

    for ( var n=0 ; n< fileList.length ; n++ ) {
        var dstPath = fileList[n].fsName.replace( srcFolderArray[0], dstFolder );
        var dstFile = new File( dstPath );
        var cPic  = documents.add( xsize, ysize, 72, dstFile.name );
        for( var p=0 ; p<4 ; p++ ) {
	        var srcFileObj = new File( fileList[n].fsName.replace( srcFolderArray[0], srcFolderArray[p] ));
	        var addPic = open( srcFileObj );
	        addPic.activeLayer.applySharpen();
	        addPic.resizeImage( xsize / 2, ysize / 2 );
	        addPic.activeLayer.copy();
	        addPic.close(SaveOptions.DONOTSAVECHANGES );
	        activeDocument = cPic;
	        cPic.selection.select( selRegion );
	        cPic.paste();
	        cPic.activeLayer.translate( ( p % 2 ) * xsize / 2, Math.floor( p / 2 ) * ysize / 2 );
	    }
        cPic.saveAs( dstFile, jpegOpt, true, Extension.LOWERCASE);
        cPic.close( SaveOptions.DONOTSAVECHANGES );
    }
}

//★前回:以下を差し替え
SizeConvert( "kakou_picture1", "kakougo_picture1", 450, 600 );
SizeConvert( "kakou_picture2", "kakougo_picture2", 450, 600 );
MergeImage( Array( "kakou_picture3", "kakou_picture4", "kakou_picture5", "kakou_picture6" ), "kakougo_picture3", 450, 600 );

最後の3行を下記に書き換えたものをそれぞれ別のファイルとしておけば、

それぞれのパターンの処理ができるかと思います。


//★1パターン
SizeConvert( "kakou_picture1", "kakougo_picture1", 450, 600 );
SizeConvert( "kakou_picture2", "kakougo_picture2", 450, 600 );
SizeConvert( "kakou_picture3", "kakougo_picture3", 450, 600 );

//★2パターン
SizeConvert( "kakou_picture1", "kakougo_picture1", 600, 450 );
SizeConvert( "kakou_picture2", "kakougo_picture2", 450, 600 );
SizeConvert( "kakou_picture3", "kakougo_picture3", 450, 600 );

//★3パターン
SizeConvert( "kakou_picture1", "kakougo_picture1", 600, 450 );
SizeConvert( "kakou_picture2", "kakougo_picture2", 450, 600 );
MergeImage( Array( "kakou_picture3", "kakou_picture4", "kakou_picture5", "kakou_picture6" ), "kakougo_picture3", 450, 600 );
id:aiomock

ご回答ありがとうございます。

試してみます。

2009/02/03 22:52:39

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません