Einzelnen Beitrag anzeigen

knaeuel

Registriert seit: 2. Jul 2007
110 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Bild in galerie ablegen (iOS, Android)

  Alt 10. Sep 2018, 12:02
es hat etwas gedauert, bis ich wieder zu diesem Problem vorgedrungen bin.

Albernerweise ist der Code für iOS und Android identisch. Die Lösung, die ich am Anfang für Android gepostet habe, funzt auch mit iOS (11.3).

kleines Edit für iOS:
Die Berechtigungen muss man, genau wie von Sherlock beschrieben, ergänzen:
Unter Projekt->Optionen->Versionsinformationen zunächst schauen, dass oben als "Ziel" die gewünschte iOS-Konfiguration ausgewählt ist.
Wenn das korrekt eingestellt ist, müssen unten die beiden Schlüssel

"NSPhotoLibraryAddUsageDescription" und
"NSPhotoLibraryUsageDescription"

vorhanden sein. Der Wert dahinter ist die Erklärung, die iOS bei der Berechtigungsabfrage anzeigt, ist also gewissermaßen beliebig, nur leer würd ichs nicht lassen (habs aber nicht probiert).


Delphi-Quellcode:
uses FMX.Platform,FMX.MediaLibrary;

procedure TFormChart.BildInGalerieSpeichern;
var photolib:IFMXPhotoLibrary;
    mybmp:TBitmap;
begin
  {$IF Defined(ANDROID) OR Defined(IOS)}
    if TPlatformServices.Current.SupportsPlatformService(IFMXPhotoLibrary) then
    begin
      //Zugriff auf Galerie ergattern:
      photolib:=TPlatformServices.Current.GetPlatformService(IFMXPhotoLibrary) as IFMXPhotoLibrary;
      //Bitmap erzeugen (hier aus einem TeeChart)
      mybmp := Chart1.TeeCreateBitmap(clWhite,Rect(0,0,ceil(Chart1.Width),ceil(Chart1.Height)));
      //Bitmap in Galerie pflanzen
      photolib.AddImageToSavedPhotosAlbum(mybmp);//Bild vom Typ TBitmap einfügen
      //Bitmap freigeben
      mybmp.Free;
    end;
  {$ENDIF}
end;
für Android mit API Level 26 braucht es allerdings inzwischen eine Permission-Abfrage zur Laufzeit.
Ich nutze dafür die KastriFree Library https://github.com/DelphiWorlds/KastriFree (Demos inklusive)
Wolfgang

Geändert von knaeuel (10. Sep 2018 um 12:08 Uhr)
  Mit Zitat antworten Zitat