/** * @fileoverview フォルダを選択し、中のビットマップ画像をリサイズおよびCMYK化したPSDとして出力する * @author Kenshi Muto <kmuto@debian.org> */ /* Copyright: 2008-2014 Kenshi Muto ---------------------------------------------------------------------- ソフトウェア使用許諾同意書 本ソフトウェアの利用・変更・再配布にあたっては、下記の使用許諾同意書に 同意する必要があります。 1. 本使用許諾同意書における「ソフトウェア」とは、機械可読の資料 (ライブ ラリ、スクリプト、ソースファイル、データファイル)、実行形式、および 文書を意味します。 2. 本ソフトウェアの使用許諾同意書に同意する限りにおいて、使用者は 本ソフトウェアを自由に利用、変更することができます。 3. 本ソフトウェアに変更を加えない限りにおいて、使用者は本ソフトウェアを 自由にコピー、再配布することができます。 4. 本ソフトウェアは無保証です。作者およびそれに関連する組織、配布者は、 本ソフトウェアの使用に起因する一切の直接損害、間接損害、偶発的損害、 特別損害、懲戒的損害、派生的損害について何らの責任・保証も負いません。 5. 本ソフトウェアを変更した上で再配布するときには、下記の事項すべてに 従わなければなりません。 - 使用許諾同意書の内容に変更を加えてはなりません。技術上の理由で 文字エンコーディングの変換を行うことは許可しますが、その使用者が 特殊な技術的措置なしに可読な形でなければなりません。 - 技術上の理由でバイナリ化・難読化を行う場合も、変更箇所を含めた ソフトウェアを、その使用者が可読可能な形式の形で同一のメディアで 提供しなければなりません。本使用許諾同意書の2条および3条により、 使用者が可読形式の該当ソフトウェアを変更、コピー、再配布することを 妨げてはなりません。 - ソフトウェア構成物の所定の作者名の欄に、変更者のクレジット (個人名、企業名、所属、連絡先など)を「追加」しなければなりません。 6. 本ソフトウェアを変更した上で再配布するときには、変更理由および その内容を明記することが推奨されます。 7. 使用者がソフトウェアに適用可能な特許に対して特許侵害にかかわる何らか の行動を開始した時点で、この使用許諾同意書は自動的に終了し、以降 使用者はこの使用許諾書によって与えられた一切の権利を放棄するものと します。 著作権所有者 Copyright (C) 2008-2014 Kenshi Muto. All rights reserved. 使用許諾同意書バージョン1.0 著作権所有者による書面での事前の許可がない限り、この使用許諾同意書 に変更を加えてはなりません。 ---------------------------------------------------------------------- */ // ダイアログ var folder; var dialog = new Window('dialog', 'CMYK&リサイズ', [100, 100, 480, 245]); var maxwidth = 150; var dpi = 200; dialog.okButton = dialog.add("button", [180, 100, 180+50, 100+25], "開始", { name: "ok"}); dialog.cancelButton = dialog.add("button", [260, 100, 260+50, 100+25], "閉じる", { name: "cancel"}); dialog.maxlabel = dialog.add("statictext", [20, 10, 20+130, 10+25], "画像の最大幅(mm)") dialog.maxwidth = dialog.add("edittext", [160, 10, 160+35, 10+25], maxwidth.toString()); dialog.dpilabel = dialog.add("statictext", [20, 40, 20+130, 40+25], "解像度(dpi)") dialog.dpi = dialog.add("edittext", [160, 40, 160+35, 40+25], dpi.toString()); dialog.folderlabel = dialog.add("statictext", [20, 70, 20+450, 70+25], "フォルダを選択してください"); dialog.folderButton = dialog.add("button", [20, 100, 20+50, 100+25], "参照"); dialog.folderButton.onClick = function() { folder = Folder.selectDialog("変換対象画像のあるフォルダを選択"); if (folder != null) { dialog.folderlabel.text = folder.absoluteURI; } else { dialog.folderlabel.text = "フォルダを選択してください"; } } dialog.okButton.onClick = function() { if (dialog.folderlabel.text == "フォルダを選択してください") { alert("フォルダが選択されていません"); return false; } maxwidth = parseFloat(dialog.maxwidth.text); dpi = parseInt(dialog.dpi.text); var backunit = app.preferences.rulerUnits; app.preferences.rulerUnits = Units.MM; var list = folder.getFiles(); var count = 0; for (var i = 0; i < list.length; i++) { if (list[i] instanceof File && list[i].name.match(/.(tif|tiff|jpg|jpeg|gif|png|bmp)$/i)) { convertToCMYKPSD(list[i], new File(list[i].absoluteURI.replace(/.(tif|tiff|jpg|jpeg|gif|png|bmp)$/i, ".psd")), maxwidth, dpi); count++; } } app.preferences.rulerUnits = backunit; alert(count + "個のファイルの変換が完了しました"); } dialog.cancelButton.onClick = function() { dialog.close(); } dialog.show(); /** * 指定のファイルのリサイズおよびCMYK化を行い、別名でPSD形式で保存する * @param {File} file 変換元ファイルオブジェクト * @param {File} newfile 保存ファイルオブジェクト * @param {Float} maxwidth リサイズ後の幅(mm)。このサイズに満たない画像はリサイズしない * @param {Number} dpi 解像度 * @type Nothing */ function convertToCMYKPSD(file, newfile, maxwidth, dpi) { var myDocument = app.open(file); if (myDocument.resolution != dpi) { // DPI変更 myDocument.resizeImage(null, null, dpi, ResampleMethod.NONE); } if (myDocument.width > maxwidth) { // 幅変更 var maxheight = myDocument.height * (maxwidth / myDocument.width); myDocument.resizeImage(maxwidth, maxheight); } myDocument.changeMode(ChangeMode.CMYK); var saveOpt = new PhotoshopSaveOptions(); saveOpt.alphaChannels = false; saveOpt.annotations = true; saveOpt.embedColorProfile = true; saveOpt.layers = true; saveOpt.spotColors = true; myDocument.saveAs(newfile, saveOpt, true, Extension.LOWERCASE); myDocument.close(SaveOptions.DONOTSAVECHANGES); }