AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Android, ein Bitmap speichern geht ncht
Thema durchsuchen
Ansicht
Themen-Optionen

Android, ein Bitmap speichern geht ncht

Ein Thema von Kostas · begonnen am 17. Okt 2014 · letzter Beitrag vom 18. Okt 2014
Antwort Antwort
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.115 Beiträge
 
Delphi 12 Athens
 
#1

AW: Android, ein Bitmap speichern geht ncht

  Alt 17. Okt 2014, 16:04
Kann die FMX-Bitmap-Klasse von sich aus.
ich habe jetzt direkt keine Klasse für PNG gefunden. Ober meinst du die Sache mit TBitmapCodecManager?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.879 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Android, ein Bitmap speichern geht ncht

  Alt 17. Okt 2014, 16:06
Der Codec wird anhand der Endung erkannt.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Android, ein Bitmap speichern geht ncht

  Alt 17. Okt 2014, 16:08
Du musst einfach nur speichern, anhand der Datei-Erweiterung wird automatisch das passende Format gewählt.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.115 Beiträge
 
Delphi 12 Athens
 
#4

AW: Android, ein Bitmap speichern geht ncht

  Alt 18. Okt 2014, 10:56
Hallo zusammen,

das Problem vorab, ich finde die Datei nicht.

irgendwie spreche ich nicht Android, ich sollte es mal mit klingonisch vesuchen.

Testhalber habe ich ein TMemo in ein File geschrieben. Ich kann auch das File lesen,
doch finden kann ich es nicht.

Delphi-Quellcode:
  aMemoFile := TPath.GetSharedDocumentsPath + TPath.DirectorySeparatorChar + 'Memo.txt';
  Memo1.Lines.add(aMemoFile);
  Memo1.Lines.SaveToFile(aMemoFile);
Dem Samsung Tab habe ich eine SD-Card verpasst.
Als Speicherort wird ausgegeben:
/storage/emulated/0/Adroid/data/com.embarcadero.PngProblem/files/Memo.txt

Ich suche nun nach Memo.txt über den Datamanager vom Tab auf "SD Card" und finde nichts.
Ebenso wenig über den Windows Dateiexplorer. Kann es sein das die Files hiden sind?
Auch im Gerätespeicher ist nichts zu finden. Die Memo.txt wird jedoch geladen mit Memo1.Lines.LoadFromFile(aMemoFile); Warum kann ich die Datei nicht finden?

Bezüglich bmp als png speichern, sicht es etwas anders aus. Ich bekomme beim speichern keine Fehlermeldung.
Doch die Datei kann geladen werden jedoch kann sie nicht gefunden wird.


Delphi-Quellcode:
    
  aImageFile := TPath.GetSharedDocumentsPath + TPath.DirectorySeparatorChar + 'image.png';
  ImageViewer1.Bitmap := bmp; //Image wird angezeigt.
  bmp.SaveToFile(aImageFile); //keine Fehlermeldung.

  if FileExists(aImageFile)then //Image wird nicht gefunden
  begin
    ImageViewer2.Bitmap.LoadFromFile(aImageFile);
  end;
Hat jemand eine Idee?
Gruß Kostas

Geändert von Kostas (18. Okt 2014 um 10:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Android, ein Bitmap speichern geht ncht

  Alt 18. Okt 2014, 11:23
Also nochmal
Android kennt das BMP-Format nicht!

Ein Bild zu speichern ist unter FMX so einfach wie Luft holen
Delphi-Quellcode:
procedure TMainForm.TakePhotoFromCameraAction1DidFinishTaking( Image: TBitmap );
var
  LImageFilename: string;
begin
  // Zur Kontrolle in der Form anzeigen
  Image1.Bitmap := Image;
  // Dateiname basteln
  LImageFilename := TPath.Combine( TPath.GetSharedPicturesPath, FormatDateTime( '"img_"yyyymmddhhnnss".png"', Now ) );
  // Speichern
  Image.SaveToFile( LImageFilename );
  // Pfad in das Label schreiben
  Label1.Text := LImageFilename;
end;
Da ich SharedPicturesPath genommen habe und der Pfad mit
Code:
/storage/emulated/0/Pictures
(man beachte das emulated und informiert sich mal bei Google)
finde ich die Datei
  • Android (Eigene Dateien App):
    Code:
    Gerätespeciher/Pictures
  • Windows (Explorer):
    Code:
    <Gerät>\Tablet\Pictures
Warum? Weil dieser Pfad auch dann existiert, wenn keine externe Speicherkarte angeschlossen wurde. Darum steht im Pfad auch emulated!

Ach ja, und wenn das als JPEG abgespeichert werden soll, dann einfach
Delphi-Quellcode:
  // Dateiname basteln
  LImageFilename := TPath.Combine( TPath.GetSharedPicturesPath, FormatDateTime( '"img_"yyyymmddhhnnss".jpg"', Now ) );
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (18. Okt 2014 um 11:26 Uhr)
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.115 Beiträge
 
Delphi 12 Athens
 
#6

AW: Android, ein Bitmap speichern geht ncht

  Alt 18. Okt 2014, 16:34
oh je, wahrscheinlich hat es immer funktioniert. Es ist nur ein komisches Verhalten.

Wenn der Ordner leer ist und ich erstelle über die App ein File, wird das File im Windows-Explorer nicht
angezeigt auch nicht bei F5 und auch nicht wenn ich den Explorer neu starte. Kopiere ich jedoch irgendeine
Datei in \Tablet\Pictures erscheinen danach auch die Files die ich per App erstellt habe. Danach funktioniert auch das aktualisieren mit F5 sofort. Ich schreibe auch in den gleichen Path \Tablet\Pictures
den Inhalt eines Memo in ein Textfile. Das gleiche Verhalten.

Im Dateimanager vom Tab werden die Files sofort angezeigt.

Zum Thema Image als png anlegen.
Das funktioniert auch einwandfrei.
Wenn ich das File direkt lade etwa so:
ImageViewer2.Bitmap.LoadFromFile(atmpImageFile); funktioniert es nicht.

Aber so funktioniert es:
Delphi-Quellcode:
  bmp:=FMX.Graphics.TBitmap.Create;
  bmp.LoadFromFile(atmpImageFile);
  ImageViewer2.Bitmap := bmp;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.396 Beiträge
 
Delphi 12 Athens
 
#7

AW: Android, ein Bitmap speichern geht ncht

  Alt 18. Okt 2014, 17:27
Delphi-Quellcode:
  aMemoFile := TPath.GetSharedDocumentsPath + TPath.DirectorySeparatorChar + 'Memo.txt';
  Memo1.Lines.add(aMemoFile);
  Memo1.Lines.SaveToFile(aMemoFile);
Dem Samsung Tab habe ich eine SD-Card verpasst.
Als Speicherort wird ausgegeben:
/storage/emulated/0/Adroid/data/com.embarcadero.PngProblem/files/Memo.txt

Ich suche nun nach Memo.txt über den Datamanager vom Tab auf "SD Card" und finde nichts.
...

Siehe Googles:
Die verbieten seit Android 4.4.2 das direkte Schreiben auf die SD Karte....

aus http://www.delphipraxis.net/182322-f...ml#post1276401

Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.115 Beiträge
 
Delphi 12 Athens
 
#8

AW: Android, ein Bitmap speichern geht ncht

  Alt 18. Okt 2014, 21:22
Danke wieder einmal himitzu,
wieder ein Puzzle weiter.

Dir noch eine schöne Zeit.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz