XE8からフォトアルバム(カメラロール)に画像を保存する機能が追加されました。
IFMXPhotoLibraryのAddImageToSavedPhotosAlbumを使うと簡単に画像をフォトアルバム(カメラロール)に保存できます。
IFMXPhotoLibrary.AddImageToSavedPhotosAlbumを使ったサンプルアプリケーションを作成しながら解説します。
フォームにTImageとTButtonを配置します。
配置したImage1に適当な画像を読み込みます。
このサンプルアプリケーションでは、ボタンを押すと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の実行画面です。
iOSの実行画面です。