Первый способ
Сохранить можно через библиотеку AssetsLibrary
uses
iOSapi.AssetsLibrary, FMX.Helpers.iOS;
procedure SaveToAlbum(const ASourceBitmap: TBitmap);
var
AssetsLibrary: ALAssetsLibrary;
Image: UIImage;
begin
Image := BitmapToUIImage(ASourceBitmap);
AssetsLibrary := TALAssetsLibrary.Create;
try
AssetsLibrary.writeImageToSavedPhotosAlbum(Image.CGImage, Image.imageOrientation, PerformResultOfSavingPhoto);
finally
AssetsLibrary.release;
end;
end;
Второй способ
Через UIImageWriteToSavedPhotosAlbum:
В декларации этой функции в делфи допущена ошибка, поэтому ниже привожу исправленную декларацию:
uses
iOSapi.UIKit, MacApi.ObjectiveC, Macapi.ObjCRuntime;
// ===== External functions =====
const
libUIKit = '/System/Library/Frameworks/UIKit.framework/UIKit';
procedure UIImageWriteToSavedPhotosAlbum(image: Pointer; completionTarget: Pointer; completionSelector: SEL;
contextInfo: Pointer); cdecl; external libUIKit name _PU + 'UIImageWriteToSavedPhotosAlbum';
procedure SavePhotoToAlbum(const ABitmap: TBitmap);
var
AssetsLibrary: ALAssetsLibrary;
Image: UIImage;
begin
Image := BitmapToUIImage(ABitmap);
UIImageWriteToSavedPhotosAlbum((Image as ILocalObject).GetObjectID, nil, nil, nil);
end;