Delphi 10 SeattleのFiremonkeyアプリケーションでフォトアルバム(カメラロール)に画像を保存するには

XE8からフォトアルバム(カメラロール)に画像を保存する機能が追加されました。
IFMXPhotoLibraryのAddImageToSavedPhotosAlbumを使うと簡単に画像をフォトアルバム(カメラロール)に保存できます。

IFMXPhotoLibrary.AddImageToSavedPhotosAlbumを使ったサンプルアプリケーションを作成しながら解説します。

フォームにTImageとTButtonを配置します。
配置したImage1に適当な画像を読み込みます。

album01

このサンプルアプリケーションでは、ボタンを押すとImage1に表示されている画像をフォトライブラリに保存します。

Delphi 10 Seattleから、画像を保存したときに成功したかどうかをコールバックで受け取ることができるようになりました。
結果を受け取るメソッドWriteImageCompletionを追加します。

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { private 宣言 }
    procedure WriteImageCompletion(const ASaved: Boolean;
      const AResultMessage: string);
  public
    { public 宣言 }
  end;


procedure TForm1.WriteImageCompletion(const ASaved: Boolean;
  const AResultMessage: string);
begin
  ShowMessage(AResultMessage);
end;

引数ASavedは、操作が正常に行われた(画像が保存された)かどうかを示します。
引数AResultMessageは、任意のメッセージテキストです。エラーが発生した場合には、エラーメッセージが格納されることもあります。

ボタンを押したときのイベントを追加します。

uses FMX.Platform, FMX.MediaLibrary;

procedure TForm1.Button1Click(Sender: TObject);
var
  Service: IFMXPhotoLibrary;
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXPhotoLibrary, Service) then
  begin
    Service.AddImageToSavedPhotosAlbum(Image1.Bitmap, WriteImageCompletion);
  end;
end;

SupportsPlatformServiceメソッドで、IFMXPhotoLibraryがサポートされているかどうかを調べます。
IFMXPhotoLibraryがサポートされていれば、AddImageToSavedPhotosAlbumメソッドで、画像をフォトライブラリに保存します。

保存結果は、WriteImageCompletionメソッドで判定できます。

Androidの実行画面です。

android01

android02

android03

iOSの実行画面です。

ios01

ios02

参考

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください