[ 前へ | 目次 | 次へ ]
Now Loading...
ダウンロード
PC (※スマートフォンでは動きません) でダウンロードし、ZIPファイルを右クリックメニューから展開して、できたフォルダ内の「 VCSSL.bat(バッチファイル) 」をダブルクリックすると起動します。 Linux等では「 VCSSL.jar 」をコマンド実行してください。
» 詳しい使用方法や、エラーで展開できない際の対応方法などはこちら

画像を任意サイズに拡大・縮小する簡易ツール

このプログラムは、画像ファイルを開き、任意のサイズに拡大・縮小して、別名で保存する簡易ツールです。

» 複数ファイル一括処理版はこちら !

使用方法

ダウンロードと展開(解凍)

まず、PC(スマホは未対応)で上の画面の「 ダウンロード 」ボタンを押してください。 するとZIP形式で圧縮されたファイルがダウンロードされるので、そのZIPファイルを右クリックして「すべて展開」や「ここに展開」などで展開(解凍)してください。 展開が成功すると、ZIPファイルと同じ名前のフォルダができ、その中にZIPファイルの中身が入っています。

» 展開がエラーで止まってしまう場合は…

なお、Linux® 等をご使用で、右クリックメニューから展開するとファイル名が文字化けしてしまう場合は、 コマンドライン端末でZIPファイルのある場所まで cd した上で「 unzip -O cp932 ZIPファイル名 」で展開してみてください。

プログラムの起動

Microsoft® Windows® をご使用の場合

上記の通りにZIPファイルを展開したフォルダ内にある、 「 VCSSL.bat(種類はバッチファイル) 」をダブルクリック実行してください。 もしプログラムの内容を書き変えながら使いたい場合は、代わりに「 VCSSL_Editor.bat 」を実行してください。

実行すると、最初にメモリー使用量や、(必要な場合のみ)Java®実行環境を自動で入手するか 等を尋ねられるので、適時答えると、プログラムが起動します。2回目以降はすぐに起動します。

※ ここで入手したJava®実行環境は、ZIPファイルを展開した中の「 jre 」フォルダ内にダウンロードされ、このプログラムの実行のみに使用されます。PC全体に影響する形でインストールされる事はありません。

Linux® 等やその他のOSをご使用の場合

ZIPファイルを展開したフォルダ内へコマンドライン端末で cd して、以下の通り入力して実行してください:

java -jar VCSSL.jar
(プログラムの内容を書き変えながら使いたい場合は、代わりに VCSSL_Editor.jar を実行)

» javaコマンドが使用できない等のエラーが表示される場合は…

実行中にメモリー容量が不足する場合は…

このプログラムは、使い方によっては、それなりに多くのメモリーを使用します。 そのため、デフォルトのメモリー容量設定では不足する場合があります。 その場合は以下の対処方法をご参照ください:

» 実行中にメモリー容量が不足する場合(Microsoft® Windows® をご使用の場合)
» 実行中にメモリー容量が不足する場合(Linux® 等やその他のOSをご使用の場合)

※ 目安として、4288 x 2848 サイズ(約1200万画素)の写真データを拡大・縮小する場合、大体 256MB くらい(以上)割り当てれば動くようです。

画像ファイルの選択(JPEGまたはPNG形式)

起動すると、まずファイルを選択する画面が表示されるので、サイズを変更(拡大・縮小)したい画像ファイルを選んでください。 画像ファイルのフォーマットは、現時点ではJPEG形式とPNG形式に対応しています。

サンプルとして、ダウンロード・展開したフォルダ内に「 sample.jpg 」が同梱されています。 まずはそれを選んでみましょう。 内容は下図の通りです。

サンプル画像(600x398)
サンプル画像「 sample.jpg 」
ダウンロード・解凍したフォルダ内に同梱されています。サイズは幅600 x 高さ398ピクセルです。この画像のサイズを変更(拡大・縮小)し、別の画像として保存してみます。

拡大・縮小後の画像の幅を指定

ファイルを選択した後は、拡大・縮小後の画像の幅を尋ねられるので、幅のピクセル数を整数で入力してください。

拡大・縮小後の画像の高さを指定

続いて拡大・縮小後の画像の高さですが、これには以下のように2通りのモードがあるため、 まずどちらかを選択します(選択ウィンドウが表示されます)。

高さの値を手動で設定
幅と同様に、高さのピクセル数を整数で指定します。元の画像と縦横比が変わってもよく、とにかく目的のサイズにしたい場合に使用します。
縦横比が同じになる高さに設定
先に入力された幅の値に基づいて、縦横比が元の画像と同じになるように、自動で高さの値を求めて設定します。縦横比を歪めたくない場合に使用します。

「高さの値を手動で設定」を選んだ場合には、続いて高さの値を入力するウィンドウが表示されるので、高さのピクセル数を整数で入力してください。

保存するファイルの画像形式や画質を選択

続いて、保存するファイルの画質形式を PNG または JPEG 形式から選択し、JPEGを選んだ場合は画質をパーセントで指定します。 「 100.0 」が最高画質です。なお、PNGを選んだ場合は、そもそも画質が劣化しない(可逆圧縮)形式なので、画質の入力は不要です。

拡大・縮小した画像ファイルの保存(自動)

あとは、指定サイズに拡大・縮小された1画像が、ファイルに自動で保存されます。 保存されるファイル名は、元のファイル名の末尾に「 _scale.png 」または「 _scale.jpg 」が付いたものになります。

サンプル画像で試した結果は下図の通りです(実際にこのツールで変換したファイルそのものを表示しています)。 ちゃんと、画像が別のサイズに変換されていますね。

サンプル画像の処理結果(200x132)
サンプル画像の拡大・縮小結果「 sample.jpg_scale.jpg 」
元画像の内容を、最初に指定したサイズ(この例では幅200 x 高さ132ピクセル)に拡大・縮小した内容になっています。

複数ファイル一括処理版もあります !

もしも処理対象のファイルがたくさんある場合は、上の手順をファイル1個ごとにくり返すのは、少し面倒です。 そのような場合のために、フォルダ内に複数ファイルを入れて一括処理するバージョン(下記リンク)もあります。 ぜひご利用ください!

画像を任意サイズに拡大・縮小する簡易ツール(複数ファイル一括処理版)
フォルダ内にある全ての画像ファイルを開き、任意のサイズに拡大・縮小して、別のフォルダに保存する簡易ツールです。

コード解説

このプログラムのコードはVCSSLで記述されています。

内容を書き変えて改造したい場合には、 プログラムのコード「 ImageScaler.vcssl 」をテキストエディタで開いて改造してください。 スクリプト言語なので、コンパイラなどの別ソフトは不要で、コードを書き換えるだけでOKです。 VCSSLはC系の単純な文法の言語なので、C言語などに触れた事のある方なら簡単に読めると思います。

コード全体

まずは、コード全体を見てみましょう。

以上です。100行未満の比較的短いコードですね。 各部で行っている処理はコード内のコメントの通りですが、 以下では順を追ってもう少し詳しく説明します。

先頭領域

まずは、先頭の2行です。

1行目では、コードのファイルで使用している文字コード(Shift_JIS)を宣言しています。 書かなくても動きますが、書いておくと文字化けを防げます。Shift_JISの他にUTF-8も使用できます。

2行目では、グラフィックスデータを扱うための機能を提供する Graphics ライブラリを読み込んでいます。 ここで「 グラフィックスデータって一体何? 」となるかと思いますが、いわゆる画像データの事だと思ってください。 VCSSLでは、画像を読み込んだり表示したり描画したりといった事に必要なデータを、まとめてグラフィックスデータという形で扱います。

ファイルを選択し、グラフィックスデータを生成

続いて、ファイルを開く部分です。

6行目で呼んでいる choose 関数は、ユーザーにファイル選択画面を提示して、 選ばれたファイルのパスを文字列として返します。それを string 型変数の inputFilePath に控えています。

このファイルパスを7行目で newGraphics 関数の引数に渡していますが、 これによってファイルが画像として開かれ、その内容を保持するグラフィックスデータが生成されます。 要するに画像データがメモリー上に展開されます。

この newGraphics 関数は、生成したグラフィックスデータにID番号を割りふって返すので、その値をint型変数の inputGraphics に控えています。 このIDは、複数のグラフィックスデータを区別するのに使用します(実際、後で透明化した別のグラフィックスデータを生成します)。

開いた画像の幅と高さを取得し、さらに拡大・縮小後の幅をユーザーから受け取る

続いて、上で開いた画像ファイルの幅と高さをピクセル数単位で取得します。 さらに、拡大・縮小後の画像の幅をユーザーに入力してもらいます(高さは、すぐ後でモードに応じて求めます)。

ここで使用している input 関数は、ユーザーにメッセージを表示して値を入力してもらい、その入力値を返します。

ユーザーに高さの設定モードを選択してもらう

その後は拡大・縮小後の高さを求める関する処理に入ります。 これには 使用方法 の項目でも述べた通り、以下の2通りのモードを選べるようにしています:

高さの値を手動で設定
幅と同様に、高さのピクセル数を整数で指定します。元の画像と縦横比が変わってもよく、とにかく目的のサイズにしたい場合に使用します。
縦横比が同じになる高さに設定
先に入力された幅の値に基づいて、縦横比が元の画像と同じになるように、自動で高さの値を求めて設定します。縦横比を歪めたくない場合に使用します。

そこで、前者の選択肢を文字列定数「 HEIGHT_MODE_MANUAL 」、後者の選択肢を文字列定数「 HEIGHT_MODE_AUTO 」として定義した上で、 ユーザーにどちらかを選択してもらいます。これには select 関数を使用します。

最初の選択肢をメッセージとして使用しているので、そのままOKされてしまった場合には、 有効なものを再選択してもらうために直後に while 文で再表示させています(有効な選択肢が選択されたら、この while 文は抜けます)。

設定モードに応じて、拡大・縮小後の高さを求める

続いて、上で選択された設定モードに応じて、拡大・縮小後の画像の高さを、ピクセル単位で求めます。

選択されたモードは変数 heightMode に入っています。 これが「 HEIGHT_MODE_MANUAL (高さの値を手動で設定) 」だった場合には、幅と同様に、ユーザーに高さを入力してもらいます。

また、モードが「 HEIGHT_MODE_AUTO (縦横比が同じになる高さに設定) 」だった場合には、 まず入力された拡大・縮小後の幅(outputWidth)を、元画像の幅(inputWidth)で割って、拡大率を求めます。 ここで両者は int 型なので、そのまま除算すると結果も整数になってしまい、 小数点以下が落ちてしまうので(いわゆる整数除算の注意点)、 float 型にキャストした上で除算しています。

そして、求めた拡大率を元画像の高さにかけて、拡大・縮小後の高さを求めています。 こうすると、幅の拡大率と高さの拡大率が同じになるので、画像の縦横比を保ったまま拡大・縮小できます。

保存する画像ファイルの形式や画質などを、ユーザーに入力してもらう

その後は、保存する画像の形式や画質なども入力してもらって控えます。

画像形式の選択については、上で既に見た設定モードの選択と同様です。 選択されたのがJPEG形式の場合は、画質をユーザーに入力してもらいます。 PNG形式の場合は、そもそも画質が劣化しない可逆圧縮形式なので不要です。

入力画像のグラフィックスデータから、一部領域の内容を切り抜いたグラフィックスデータを生成

さて、このツールの要の処理である、画像の拡大・縮小を行っている部分です。 と言っても以下の通り、少し多い引数で newGraphics 関数を呼んでいるだけです。

この引数の組み合わせで newGraphics 関数を呼ぶと、 既にあるグラフィックスデータの内容を、 指定サイズに拡大・縮小した上で、その内容を保持するグラフィックスデータを生成してくれます。 最初の引数(inputGraphics)に元のグラフィックスデータのIDを渡します。 その後に続けて、拡大・縮小後の幅と高さを渡します。 最後の引数には、画像を滑らかにするアンチエイリアス処理の有無を指定します。 ここに true を指定すると滑らかに拡大・縮小できますが、処理時間が少し長くなるので、不要な場合は false を指定してください。

この関数は、生成した新しいグラフィックスデータにID番号を割りふって返すので、 それをint型変数 outputGraphics に控えています(ファイルの保存の際に使います)。

拡大・縮小した内容を画像ファイルとして保存

次がもう一つの重要な処理である、画像ファイルの保存処理です。

変数 outputFilePath が保存ファイル名ですが、 同じファイル名で上書き保存してしまうのは大抵の用途でまずそうなので、 開いたファイル名の末尾に(画像形式に応じて)「 _scale.png 」や「 _scale.jpg 」を付けたファイル名で保存するようにしています。

その後は、exportGraphics 関数を呼んで、グラフィックスデータを画像ファイルに保存しています。 そして、ユーザーに処理完了(と保存ファイルのパス)を伝えるメッセージを表示しています。

終了

さて、最後です。グラフィックスデータを解放して、プログラムを終了しています。

deleteGraphics は、グラフィックスデータを解放する関数です。 どうせプログラムを終了した時点で解放されるのですが、後片付け的な感じで明示的に解放しています。 その後、exit 関数を呼んでプログラムを終了しています (これが無いと、ユーザーがコンソール画面を閉じるまで終了しません)。

コード内容は以上です。

詳しいVCSSLのプログラミングガイド(無料)はこちらへ!

上記のコードはプログラミング言語VCSSLで記述されており、VCSSLのプログラミングガイドは下記で無料公開しています。 上記のコードを改造したい方や、新しいコードを書いてみたい方はぜひご活用ください!

ブラウザで読めるWeb版だけでなく、PDF版も無料で配布しています!

スタートアップガイド( プログラミングがはじめての方向け )
プログラミングの入門書に相当する内容です。プログラミングが初めての方はこちらがおすすめです。
即席ガイド( C系言語ユーザー向け )
C言語や C++ などのC系の言語を扱われている方が、即席でVCSSLを扱うための簡易ガイドです。
文法ガイド
VCSSLの文法や基本的な機能を淡々とまとめた、リファレンスマニュアル的な位置づけのガイドです。
GUI開発ガイド
ボタンや入力項目などのGUI部品が並ぶ、画面を備えたVCSSLプログラムを開発するためのガイドです。
2DCG開発ガイド
画面上や画像ファイルなどに、2次元的な描画を行うVCSSLプログラムを開発するためのガイドです。
3DCG開発ガイド
画面上や画像ファイルなどに、3次元的な描画を行うVCSSLプログラムを開発するためのガイドです。
標準ライブラリ 仕様書
コード内で呼び出される関数は、大半が標準ライブラリのものです。その詳細仕様を掲載しています。

ライセンス

このVCSSLコード( 拡張子が「.vcssl」のファイル )は実質的な著作権フリー(パブリックドメイン) である CC0 の状態で公開しています。 そのままでのご利用はもちろん、言語の種類を問わず、改造や流用などもご自由に行ってください。

※ ただし、このVCSSLコードの配布フォルダ内には、ダウンロード後すぐに実行できるように、 VCSSLの実行環境も同梱されており、そのライセンス文書は「 License 」フォルダ内に同梱されています (要約すると、商用・非商用問わず自由に使用できますが、使用の結果に対して開発元は一切の責任を負いません、といった具合の内容です)。 配布フォルダ内の各構成物の一覧やライセンスについては「 ReadMe_使用方法_必ずお読みください.txt 」をご参照ください。

この記事中の商標などについて

  • OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
  • Windows は、米国 Microsoft Corporation の米国およびその他の国における登録商標です。この記事は独立著作物であり、Microsoft Corporation と関連のある、もしくはスポンサーを受けるものではありません。
  • Linux は、Linus Torvalds 氏の米国およびその他の国における商標または登録商標です。
  • その他、文中に使用されている商標は、その商標を保持する各社の各国における商標または登録商標です。

[ 前へ | 目次 | 次へ ]
画像を任意サイズに拡大・縮小する簡易ツール(複数ファイル一括処理版)

フォルダ内にある全ての画像ファイルを開き、任意のサイズに拡大・縮小して、別のフォルダに保存する簡易ツールです。
画像を任意サイズに拡大・縮小する簡易ツール

画像ファイルを開き、任意のサイズに拡大・縮小して、別名で保存する簡易ツールです。
画像の矩形(四角形)領域を切り抜く簡易ツール(複数ファイル一括処理版)

フォルダ内にある全ての画像ファイルを開き、その中の矩形(四角形)領域を切り抜いて、別のフォルダに保存する簡易ツールです。
画像の矩形(四角形)領域を切り抜く簡易ツール

画像ファイルを開き、その中の矩形(四角形)領域を切り抜いて保存する簡易ツールです。
連番画像をアニメーション再生する簡易ツール

フォルダ内の連番画像ファイルを、動画への変換不要で、そのままアニメーションとして再生できる簡易ツールです。
条件を満たす色を透明にする簡易ツール(複数ファイル一括処理版)

フォルダ内の全画像ファイルに対して、条件を満たす範囲の色を透明に置き換え、別のフォルダに保存する簡易ツールです。
特定の色を透明にする簡易ツール(複数ファイル一括処理版)

フォルダ内にある全てのPNG形式画像ファイルを開き、特定の色を透明に置き換えた上で、別のフォルダに保存する簡易ツールです。
条件を満たす色を透明にする簡易ツール

画像ファイルを開き、指定された条件を満たす色を透明に置き換えて保存する簡易ツールです。
特定の色を透明にする簡易ツール

画像ファイルを開き、特定の色を透明に置き換えて保存する簡易ツールです。
2DCGと3DCGの合成

2DCGと3DCGを一枚に合成し、画面に表示するプログラムの例です。
RGBやカラーコードの色表示と相互変換ができる簡易ツール

RGB値とカラーコードから、GUI画面上で色の表示や相互変換を行う事ができる簡易ツールです。
頂点配列によるモデルの変形アニメーション

頂点配列によってモデルを変形アニメーションさせるサンプルです。
頂点配列によるモデルの作成(四角形格子メッシュ形式)

四角形格子メッシュの形式で、頂点配列からモデルを作成するサンプルです。
この階層の目次
[ 前へ | 目次 | 次へ ]
お知らせ

Vnanoの公式サイトがオープン、チュートリアルやAPI仕様書等も掲載
2019年08月07日 - オープンソースのアプリケーション組み込み用スクリプトエンジン「 Vnano 」の公式サイトを開設しました。チュートリアルや、スクリプトエンジンのAPI仕様書などが参照できます。その概要をお知らせします。

リニアングラフ3D/2Dが連番ファイルのアニメーションに標準で対応
2019年07月17日 - リニアングラフ3D/2Dでは、7月17日公開の最新版より、連番ファイルを連続的に読み込みながらアニメーション描画するプログラムを同梱し、メニューから標準で使用可能になりました。その概要をお知らせします。

Vnanoのスクリプトエンジンアーキテクチャ解説2: コンパイラ
2019年07月03日 - オープンソースで開発中のスクリプトエンジン「 Vnano 」のアーキテクチャを解説する連載の第2回です。今回は、スクリプトを中間コードへと変換する、コンパイラ部分の内部をクローズアップして解説します。

新着
[公式ガイドサンプル] ユーザーのGUI操作に対して処理を行う

「VCSSL GUI開発ガイド」内のサンプルコードです。ユーザーがGUIを操作した際に行う処理を実装します。
2019年07月28日
[公式ガイドサンプル] 各種GUIコンポーネントを画面上に配置する

「VCSSL GUI開発ガイド」内のサンプルコードです。色々な種類のGUI部品を画面上に配置します。
2019年07月28日
連番ファイルから3Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、3Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年06月03日
連番ファイルから2Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、2Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年05月24日
[公式ガイドサンプル] 立体モデルを生成して3D空間に配置する

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを生成し、3D空間に配置します。
2019年05月21日
開発元Twitterアカウント