javascriptで画像を拡大縮小する際の基準点について

[3423]javascriptで画像を拡大縮小する際の基準点について | 投稿者:KAKU | 投稿日:2009/07/29(Wed) 15:55:42
何度も申し訳ありませんが、スクリプトの初心者です。
IndesignCS2で、画像だけを左下を基準に縮小したいのですが、リファレンスを見るだけだと、Resizeのaroundの箇所なのは何となくわかりますが使用方法がわかりません。

docObj = app.activeDocument;
imgObj = docObj.rectangles.add();
imgObj .geometricBounds = [-10mm','5mm','0.1mm','45mm'];
imgObj.frameFittingOptions.fittingAlignment  =1095656044;
imgObj.place(filePath);
imgObj.graphics.item(0).horizontalScale = 40;
imgObj.graphics.item(0).verticalScale = 40;

ここまでは出来たのですが、縮小するとスクリプトを実行する前の基準点をもとに縮小されてしまうので、fittingAlignmentを左下に設定しても画像ボックスの下に余白がでてしまいます。
恥ずかしい質問ですが、よろしくお願いします。
» 1
CS2が手元にないので確認できないのですが。

> imgObj.frameFittingOptions.fittingAlignment =1095656044;
この行は不要です。

> imgObj.graphics.item(0).horizontalScale = 40;
> imgObj.graphics.item(0).verticalScale = 40;
この行の代わりに

imgObj.graphics.resize(水平方向の倍率, 垂直方向の倍率, 基準点)

とすればできると思います。基準点は1095656044をそのまま入れればよいです。
» 2
[3428]Re: javascriptで画像を拡大縮小する際の基準点について | 投稿者:こに | 投稿日:2009/07/29(Wed) 18:53:34
>imgObj.graphics.resize(水平方向の倍率, 垂直方向の倍率, 基準点)
これは、
imgObj.graphics[0].resize(水平方向の倍率, 垂直方向の倍率, 基準点)
でないとエラーになります。
それと、画像の左下(1095656044の場合)を基準にリサイズするので、リサイズ前の画像が画像ボックスからはみ出していると、画像ボックスの左下に揃わない可能性があるので、リサイズ後に画像の移動が必要になると思います。
» 3
[3429]Re: javascriptで画像を拡大縮小する際の基準点について | 投稿者:お~まち | 投稿日:2009/07/30(Thu) 00:45:39
こにさん、訂正ありがとうございます。
» 4
[3430]Re: javascriptで画像を拡大縮小する際の基準点について | 投稿者:KAKU | 投稿日:2009/07/30(Thu) 10:35:19
返信ありがとうございます。
あと、FrameFittingOptionは、CS3からだと気づきました。
docObj = app.activeDocument;
imgObj = docObj.rectangles.add();
imgObj .geometricBounds = [-10mm','5mm','0.1mm','45mm'];
imgObj.place(filePath);
imgObj.graphics[0].resize (40,40,1095656044);
だと、フレームの左上に画像が配置され、画像は左下を基準にリサイズされます。
フレームの左下に配置するにはCS2ではどうすればいいのでしょうか?

また、CS3ではresizeの機能自体がなくなっています。
CS2と書いてしまいましたが、CS3ではどうやればいいのか教えていただけるとうれしいです。
» 5
[3433]Re: javascriptで画像を拡大縮小する際の基準点について | 投稿者:PICTRIX | 投稿日:2009/07/30(Thu) 16:50:33
>また、CS3ではresizeの機能自体がなくなっています。
CS2と書いてしまいましたが、CS3ではどうやればいいのか教えていただけるとうれしいです。

obj[ i ].transform(  );
だったような。。。あいまい
» 6
[3435]Re: javascriptで画像を拡大縮小する際の基準点について | 投稿者:こに | 投稿日:2009/07/30(Thu) 17:12:52
>だと、フレームの左上に画像が配置され、画像は左下を基準にリサイズされます。
>フレームの左下に配置するにはCS2ではどうすればいいのでしょうか?
imgObj.graphics[0].move([X,Y])
で、リサイズ後の画像の左下がグラフィックフレームの左下にくるように、画像の左上の座標(X, Y)を計算してあげればいいです。

>CS3ではどうやればいいのか教えていただけるとうれしいです。
InDesign CS3 Transformation Tutorialから、indesigncs3_transform_tutorial_javascript.pdfとサンプルコードをダウンロードしてきて試してみればわかるかと思います。

var myTransformMatrix = app.transformationMatrices.add();
myTransformMatrix = myTransformMatrix.scaleMatrix(0.4, 0.4);
imgObj.graphics[0].transform(CoordinateSpaces.innerCoordinates, AnchorPoint.bottomLeftAnchor, myTransformMatrix);

こんな感じです。
» 7
[3436]Re: javascriptで画像を拡大縮小する際の基準点について | 投稿者:KAKU | 投稿日:2009/07/30(Thu) 17:50:47
返信ありがとうございます。
みなさまのおかげで問題が無事に解決しました。
transformに関しては、すこし理解に時間がかかる項目であるため、すこしづつ理解していければと思います。
私のために時間を割いていただいて本当にありがとうございました。
これからもよろしくお願いします。
» 8
[3448]Re: javascriptで画像を拡大縮小する際の基準点について | 投稿者:(z-) | 投稿日:2009/08/03(Mon) 12:47:27
ややうしろむきな方法ですが、CS2のscriptオブジェクトを使いたい時だけ瞬間的にスクリプトエンジンのバージョンを指定してやるといいです
実行後に戻し忘れると厄介なので注意して下さい

my_version=app.scriptPreferences.version; //元のバージョン_CS3は5.0
app.scriptPreferences.version=4; //CS2に指定
sel.resize(50,50); //リサイズ実行
app.scriptPreferences.version=my_version; //元に戻す
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア