Перейти к содержанию
  • Регистрация
  • 0
xenon54

[iOS] Как сохранить Bitmap в Фотоальбом?

Вопрос

Всем привет. Кто-нибудь знает можно ли сохранить Bitmap в фотоальбом? И если да, то как?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0

Примерно так
 

uses
  System.IOUtils;

var
  b: TBitmap;
begin
   b.SaveToFile( TPath.GetPicturesPath + PathDelim + '1.bmp' );
end;

Правда не уверен на счет пути, может другой надо подставить (GetPublicPath, GetDocumentsPath). Поэкспериментируйте...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Первый способ

 

Сохранить можно через библиотеку 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;
Изменено пользователем Brovin Yaroslav

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

В первом способе "TALAssetsLibrary"  не смог найти где описан этот класс.

Второй способ работает на ура, спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

В XE8 был добавлен сервис для сохранения изображения в системную галерею для iOS и Android. Сервис FMX.MediaLibrary:

  /// <summary>Saves image to System Photos Album</summary>
  IFMXPhotoLibrary = interface
    ['{D10DE62A-7398-4BC6-AA4C-AF5F4382BC46}']
    /// <summary>Adds specified image to photo album</summary>
    procedure AddImageToSavedPhotosAlbum(const ABitmap: TBitmap);
  end;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...