SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

定型処理を行う簡易スクリプト実行系の実装

コマンド入力に対応した画像処理アプリケーションの作成

  • X ポスト
  • このエントリーをはてなブックマークに追加

画像処理やデータ処理などのアプリケーションを作っていると、何らかの「手続き」を自動化したくなることがあります。そこで、本稿では、ごく簡単なものですが、こうしたスクリプトの実行系を実装してみます。具体的には、画像を読み込んで簡単な処理を加える画像処理アプリケーションを作成します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 画像処理やデータ処理などのアプリケーションを作っていると、何らかの「手続き」を自動化したくなることがあります。例えば、画像データを読み込んで減色や縮小などの定型処理を行う、あるいは、サーバーからCSVファイルを読み込んで、レコードに計算など一定の処理を加えた上でDBに格納する、といった処理です。

 こうした処理を毎回手作業で行うのではなく、あらかじめ処理の内容を記述しておいたテキストファイルに沿ってまとめて行えるようになれば、作業効率は飛躍的に向上するでしょう。

 多くのソフトでは、こうした要求に答えるためにスクリプトインタープリタを実装し、ユーザーが行いたい手続きをテキストとして記述できるようになっています。本稿では、ごく簡単なものですが、こうしたスクリプトの実行系を実装してみたいと思います。

 本稿で作成するのは、画像を読み込んで簡単な処理を加える画像処理アプリケーションです。画像の読み込みや画像に対する処理は、いずれも簡単なコマンドを並べたスクリプトで記述します。

完成画像
完成画像

対象読者

  • GUIベースの.NET FrameworkアプリケーションをC#で作成したことがある方

必要環境

  • .NET Framework SDK 1.1以上

本プログラムの構成

 本アプリケーションは、画像を処理して表示する画像処理コンポーネントと、その画像処理コンポーネントや各種GUIを納めるフォームから構成されています。

 フォームには、画像処理コンポーネントの他、スクリプトを入力するテキスト欄、実行経過(認識したコマンドや引数文字列)を表示するリードオンリーのテキスト欄、[実行]ボタンを配置しておきました。画像処理コンポーネントは、フォーム上に配置したスクロール可能なパネルに格納して、画像のサイズに応じて自動でスクロール表示されるようになっています。

 アプリケーションを実行する際は、テキスト欄にスクリプトを入力し、[実行]ボタンをクリックします。処理の過程がテキストで表示され、処理結果の画像を画像処理コンポーネント上で確認できます。

スクリプトの書式

 スクリプトは、次の形式で、1行に1つのコマンドを記述します。引数はカンマ区切り、数値はそのまま、ファイルパスなどの文字列は""で囲んで記述します。

コマンド名(引数)

 コマンドは、以下のものを用意しました。

コマンド一覧
コマンド名機能引数
load画像を読み込むファイルパス
mirror左右反転なし
upset上下反転なし
addRGB各ピクセルのRGBに指定値を加算R加算値, G加算値, B加算値
resize指定サイズにリサイズ横幅, 高さ

 いずれも、.NET FrameworkのBitmapGraphicsの機能を使えば簡単に実現できるものです。ですから、最大の焦点は、文字列として渡されたスクリプトからコマンドや各引数を分離する処理であり、そしてその「意味」を認識する点にあります。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
スクリプトの文字列処理

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

宍戸 輝光(シシド テルミツ)

盛岡在住のプログラマ。事実上のフリーター状態から脱しつつある……と良いのですがw著者サイト:創作プログラミングの街

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/408 2006/06/13 00:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング