[Fireworks] 画像ファイルを一括して指定。任意の幅・高さ以内にリサイズするjsf

2010/12/9

こんにちは。きんくまです。
ひさびさのFireworksネタです。

ファイルを上書きするので注意が必要です。FireworksCS4で動作確認してあります。

1 フォルダを指定
2 指定の幅・高さ以内に画像がおさまるようにリサイズ
3 上書き保存
4 2、3を終わるまで繰り返し

自分でほしいほしいと思ってて、作る機会もなかったんですが久しぶりに同じことをするため
必要になったのでつくりました。本当はPhotoshop版がほしかったんですけどね。jsx覚えたいな。

使い方としては、拙作jsfEditを使うとすごく簡単なんですが、わざわざいれたくないよという人のために。→Flash経由で大量のバッチ処理をしたところメモリの解放がうまくいかないみたいで、固まってしまうことが判明しました。このバッチはjsfをそのまま実行しないとダメみたいです、、。

1 下のソースをコピーするか、このファイルをダウンロード。コピーした場合はUTF-8Nでファイル名をResizeImage.jsfなどとします
2 先頭行に書いてある setW, setHを希望する最大幅、最大高さに変更する
3 Fireworksのメニューからコマンド > スクリプトを実行 > 1のファイルを選ぶ

すると、ダイアログが出てくるのであとは、変更したいファイルを複数選択すると、
処理が始まります。

以下ソース



var setW = 400; //max width
var setH = 300; //max height

var folderPath = fw.locateDocDialog(999,[]);
for(var i = 0; i < folderPath.length; i++){
	var file = fw.openDocument(folderPath[i], false, false);
	var dom = fw.getDocumentDOM();
	var domW = dom.width;
	var domH = dom.height;

	if(domW > setW || domH > setH){
		setSelectionBounds(dom, domW, domH);
	}

	fw.getDocumentDOM().setDocumentCanvasSizeToDocumentExtents(true);
	fw.saveDocument(null, null);
	fw.closeDocument(file, false);
}

function setSelectionBounds(dom, domW, domH){
	var ratio;
	var tmpW, tmpH;
	if(setW > setH){
		ratio = setW / domW;
		tmpW = setW;
		tmpH = ratio * domH;
		if(tmpH > setH){
			ratio = setH / domH;
			tmpW = domW * ratio;
			tmpH = setH;
		}
	}else{
		ratio = setH / domH;
		tmpW = ratio * domW;
		tmpH = setH;
		if(tmpW > setW){
			ratio = setW / domW;
			tmpW = setW;
			tmpH = domH * ratio;
		}
	}
	var setRect = {left:0, top:0, right:tmpW, bottom:tmpH}
	dom.setSelectionBounds(setRect,"transformAttributes");
}

ではでは。

LINEで送る
Pocket

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る