人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【1000pt質問】

javascript に関する質問です。

javascriptに詳しい方、もしくはスクリプトを作成する時間がある方で作成できるかたおりましたらよろしくお願いいたします。

現在adobe photoshop7を使用しているのですが、photoshopのスクリプトを作成したいと考えています。

作成しようとしているスクリプトは、プログラムを実行すると6枚の写真を元に加工された写真を3枚自動で作成するというプログラムです。

加工するフォルダなどがあるファイルの環境は以下になります。

http://oskuni7.sakura.ne.jp/hatena/question5/foruda.htm

実行したいプログラムの詳細は以下になります。

http://oskuni7.sakura.ne.jp/hatena/question5/puroguramu.htm

scriptを作成していただき、実際に動いた場合は1000pt差し上げさせていただければと考えております。

adobe script に関してのアドバイスでもかまいません。

お手数をおかけしますが、どうぞよろしくお願いいたします。

●質問者: aiomock
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Adobe Adobe Photoshop JavaScript Photoshop SCRIPT
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● niwa-mikiho
●27ポイント

画質に強力なこだわりを持っていなければ、Perl+GD や PHP+GD などプログラミング言語を使うのはどうでしょう?

◎質問者からの返答

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

+GDというプログラム言語があることは知りませんでした。

検討してみます。


2 ● Mook
●100ポイント

PhotoShop のスクリプトは以前から興味があったのですが、

今回の質問が面白そうでしたので、これを機会に使ってみました。


一応、下記のスクリプトでご希望の処理になっていないでしょうか。

// Global define

// ★★★実際のパスに変更してください。
var rootFolder = "C:/Documents and Settings/aiomock/デスクトップ/adobe script/";
var cPic;
var srcFileObj;
var dstFileObj;

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, fClose ) {
 var folderObj = Folder(rootFolder + srcFolder );
 fileList = folderObj.getFiles();
 if( fileList.length >= 1 ) {
 srcFileObj = new File( fileList[0].fsName );
 var dFilePath = fileList[0].fsName.replace( srcFolder, dstFolder );
 dstFileObj = new File( dFilePath );
 srcFileObj.copy( dstFileObj );
 cPic = open(dstFileObj);

 preferences.rulerUnits = Units.PIXELS;
 cPic.activeLayer.applySharpen();
 cPic.resizeImage(600,450);
 cPic.saveAs(dstFileObj, jpegOpt, true, Extension.LOWERCASE);
 if( fClose == true ) {
 cPic.close(SaveOptions.DONOTSAVECHANGES);
 }
 }
}

// 画像結合関数
function addImage( srcFolder, xPos, yPos ) {
 var selRegion = Array( Array(0, 0), Array(1, 0), Array(1, 1), Array(0, 1), Array(0, 0));
 var folderObj = Folder(rootFolder + srcFolder );
 fileList = folderObj.getFiles();

 if( fileList.length >= 1 ) {
 srcFileObj = new File(fileList[0].fsName);
 var addPic = open( srcFileObj );
 addPic.activeLayer.applySharpen();
 addPic.resizeImage( 300, 225 );
 addPic.activeLayer.copy();
 activeDocument = cPic;
 cPic.selection.select( selRegion );
 cPic.paste();
 cPic.activeLayer.translate( xPos, yPos );
 addPic.close( SaveOptions.DONOTSAVECHANGES );
 }
 if( xPos != 0 && yPos != 0 ) {
 cPic.saveAs(dstFileObj, jpegOpt, true, Extension.LOWERCASE);
 cPic.close( SaveOptions.DONOTSAVECHANGES );
 }
}
// 変換処理
SizeConvert( "kakou_picture1", "kakougo_picture1" , true);
SizeConvert( "kakou_picture2", "kakougo_picture2" , true);
SizeConvert( "kakou_picture3", "kakougo_picture3", false );

addImage( "kakou_picture3", 0, 0);
addImage( "kakou_picture4", 300, 0);
addImage( "kakou_picture5", 0, 225);
addImage( "kakou_picture6", 300, 225);

http://www.openspc2.org/book/PhotoshopCS/

◎質問者からの返答

ご回答ありがとうございます。試してみようかと思います。


エラーが発生してしまいました。

エラー 21:undefined がオブジェクトでありません。

ライン:66

→ cpic.saveAs(dstFileObj,jpegOop.true.Extension.LOWERCASE);

こちらはどのように対処すればよろしいでしょうか。

お手数をおかけしますがどうぞよろしくお願いいたします。


3 ● Mook
●100ポイント ベストアンサー

一応複数ファイルに対応してみました。

// 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 ) {
 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(600,450);
 cPic.saveAs(dstFileObj, jpegOpt, true, Extension.LOWERCASE);
 cPic.close(SaveOptions.DONOTSAVECHANGES);
 }
}

// 画像結合関数
function MergeImage( srcFolderArray, dstFolder ) {
 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( 600, 450, 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( 300, 225 );
 addPic.activeLayer.copy();
 addPic.close(SaveOptions.DONOTSAVECHANGES );
 activeDocument = cPic;
 cPic.selection.select( selRegion );
 cPic.paste();
 cPic.activeLayer.translate( ( p % 2 ) * 300, Math.floor( p / 2 ) * 225 );
 }
 cPic.saveAs( dstFile, jpegOpt, true, Extension.LOWERCASE);
 cPic.close( SaveOptions.DONOTSAVECHANGES );
 }
}
// 変換処理
SizeConvert( "kakou_picture1", "kakougo_picture1" );
SizeConvert( "kakou_picture2", "kakougo_picture2" );

MergeImage( Array( "kakou_picture3", "kakou_picture4", "kakou_picture5", "kakou_picture6" ), "kakougo_picture3" );
◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ