N.Kikuchiをフォローする

【Delphi】Alcinoeライブラリの導入から動作確認まで

フロントエンドバックエンド

前回はDelphiの基本的な説明と、機能の説明をさせていただきました。
今回はライブラリのインストール方法、そしてそのライブラリを使用して簡単なアプリを作成してみました。

今回のゴール

読み込んだ画像をモノクロに変換するアプリの作成

こちらが完成品です。
「画像読み込み」ボタンで選択し、「グレースケール変換」ボタンを押下するとモノクロ画像になります。

Alcinoeライブラリについて

Alcinoeとは?

Alcinoeは、Delphi向けの強力なコンポーネントライブラリです。このライブラリは、視覚的および非視覚的なコンポーネントを提供し、商用、シェアウェア、フリーウェア、オープンソースプロジェクトで無料で使用できます。また、開発者が複雑さやパフォーマンスの制約に悩まされることなく、迅速でモダンなアプリケーションを作成できるように設計されています。

  • OpenGLビデオプレーヤー: 高性能なビデオ再生機能を提供します。
  • WebRTC Delphiラッパー: リアルタイムコミュニケーションをサポートします。
  • ネイティブiOS/Android TEdit: モバイルプラットフォーム向けの高度なテキスト編集機能を提供します。
  • 改良されたFireMonkeyコントロール: 高度なUIコンポーネントを使用して、視覚的に魅力的で応答性の高いアプリケーションを構築できます。
  • Firebase Cloud Messaging: プッシュ通知機能を簡単に統合できます。
  • Facebook SDKログイン: ソーシャルログイン機能をサポートします。
  • Json/Bsonパーサー: データの解析と操作を効率化します。
  • ImageMagickラッパー: 画像処理機能を提供します。
  • MongoDBクライアント: データベース操作をサポートします。

要するに色々機能は搭載されていますが、今回はその中でもImageMagickラッパー機能を使用して
画像の読み込みやモノクロ変換などの画像処理操作を簡単に行っています。

実際に使ってみよう

ライブラリのインストール方法

1. リポジトリのクローン

git clone https://github.com/MagicFoundation/Alcinoe.git

2. バッチファイルの実行

CompileAll.bat」を実行して、必要なタスクを自動的に処理します。このバッチファイルは、Delphiのソースコードを取得してパッチを適用し、必要なiOS/Androidライブラリをダウンロードし、AlcinoeのJARファイルを構築し、BPL(Borland Package Library)をビルドし、ツールをコンパイルし、デモをコンパイルします。

cd Alcinoe
./CompileAll.bat

3. Delphi上でのパッケージインストール

「プロジェクト」タブから「オプション」を選択
下記画面が開かれるため、「検索パス」にクローンしたフォルダのソースファイル(\クローンしたフォルダ\Soruce)を指定する。

これでライブラリのインストールは完了です。

必要なコンポーネントの配置

次に画面に必要なコンポーネント(ボタンとか)を配置してきます。
今回使用するコンポーネントは以下4つです
1. TButton(画像読み込み用)
2. TButton(処理実行用)
3. Image(画像表示)
4.OpenDialog

それっぽい感じで配置してみました。

ボタンにイベント追加

先ほど配置したボタン2種類にイベントを付与していきます。
Delphiでは付与したいコンポーネントの各イベント(クリック時とかEnter押下時とか)を画面上からダブルクリックすると空の関数が自動で生成されます。

画像読み込みボタン

まずは画像読み込みボダンにクリックイベントを追加していきます。
画面左下の「オブジェクトインスペクタ」より「OnClick」をダブルクリックすると
自動で「名前 + Click」で生成されます

procedure TForm1.画像読み込みClick(Sender: TObject);
begin

end;

ここに「ダイアログを起動させて、画像を選択する」という動作を追加します。

procedure TForm1.画像読み込みClick(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    Image1.Picture.LoadFromFile(OpenDialog1.FileName);
    ShowMessage('画像を読み込みました: ' + OpenDialog1.FileName);
  end;
end;
グレースケール変換ボタン

同じ要領で画像をモノクロに変換する処理をもう一つのボタンに追加します。
まずはモノクロ変換を行う関数「ConvertToGrayScale」を作成します。

procedure TForm1.ConvertToGrayScale;
var
  x, y: Integer;
  Bitmap: TBitmap;
  Color: TColor;
  Gray: Byte;
begin
  Bitmap := Image1.Picture.Bitmap;
  for y := 0 to Bitmap.Height - 1 do
  begin
    for x := 0 to Bitmap.Width - 1 do
    begin
      Color := Bitmap.Canvas.Pixels[x, y];
      Gray := (GetRValue(Color) + GetGValue(Color) + GetBValue(Color)) div 3;
      Bitmap.Canvas.Pixels[x, y] := RGB(Gray, Gray, Gray);
    end;
  end;
  Image1.Picture.Bitmap := Bitmap;
end;

今回はBitmap型の画像を対象としており、ループで各ピクセルを画像の高さ、幅毎走査して
取得した色をGetRValue(Color), GetGValue(Color), GetBValue(Color)を使って、赤、緑、青の各色成分を取得します。これらの成分の平均値を計算し、グレースケール値(Gray)を求めます。
RGB(Gray, Gray, Gray)を使って、グレースケール値を持つ新しい色を作成し、元のピクセルの色をこの新しい色に変更します。

あとはConvertToGrayScale関数をボタンのクリックイベントに追加して完了です。

procedure TForm1.グレースケール変換Click(Sender: TObject);
begin
  ConvertToGrayScale;
  ShowMessage('画像をグレースケールに変換しました。');
end;

動作確認

デプロイしてみるとまずはこの画面が立ち上がると思います。

次に「画像読み込みボタン」を押下して読み込む画像を選択します。

最後に、「グレースケール変換」ボタンを押下して数秒待機すると

こんな感じでグレースケールに変換されます!

まとめ

今回はDelphiのライブラリ「Alcinoe」の導入方法とモノクロ変換を行うアプリの作成を行ってみました。
このAlcinoeライブラリには他機能も多数含まれており、気が向いたら他機能についてもブログ作成してみようと思います。
最後までご覧いただき、誠にありがとうございました!