Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Bilder speichern (https://www.delphipraxis.net/182015-bilder-speichern.html)

himitsu 13. Okt 2014 14:03

AW: Bilder speichern
 
Indem du die Dateinamen einliest, sie in einer Listenkomponente darstellst?
Und beim Wechsel der Selektierung liest du den aktuell gewählten Dateinamen aus der Liste und lädst das Bild in eine Imagekomponente.


PS:
Delphi-Quellcode:
Bitmap.SaveToFile(... + 'myfile.jpg');
speichert zwar das Bild in einer Datei, aber auch wenn die Datei *.jpg heißt, ist darin natürlich ein Bitmap (*.bmp), da Bitmap halt ein Bitmap ist und auch nur Bitmaps speichern kann.

masterzibu 13. Okt 2014 14:13

AW: Bilder speichern
 
OK danke,probier das mal.
Habe aber schon ein problem beim Anzeigen eines Bildes.
Speichere das Bild so:

Delphi-Quellcode:
procedure TForm6.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap);
begin
 Image1.Bitmap.Assign(Image) ;
 Image1.Bitmap.SaveToFile(TPath.Combine(TPath.GetDocumentsPath, 'myfile.jpg'));
end;
Und so möchte ich es wieder Anzeigen:

Delphi-Quellcode:
procedure TForm11.Button123Click(Sender: TObject);
begin
  Image1.bitmap.LoadFromFile('myfile.jpg');
end;
Da kommt aber auf dem Smartphone die Fehlermeldung: Zugriffsverletzung bei Adresse 788526E8 beim Zugriff auf Adresse 0000000.
Was mach ich falsch? :oops:

mkinzler 13. Okt 2014 14:22

AW: Bilder speichern
 
Beim Laden sollte man genausowenig relative Pfade verwenden. Bau Dir den absoluten, entsprechend der Speicherroutine zusammen.

Btw. Bitte verwende Delphi-Tags.

himitsu 13. Okt 2014 15:12

AW: Bilder speichern
 
Da es wohl überlesen wurde:
Du speicherst Bitmaps, also sollte der Dateiname myfile.bmp heißen.

Zitat:

Was mach ich falsch?
Du hast vergessen zu sagen bei welcher Codezeile, wobei du auch gleich selber mal mit dem debugger schauen kannst, ob vor der Exception (also Halepunkt auf die Zeile, wo es knallt) eine der Variablen NIL ist.
(denn die Fehlermeldung klingt nach einem Zugriff auf einen NIL-Pointer/Objektzeiger)

Insgesamt sehen deine paar gezeigten Codezeilen erstmal nicht direkt falsch aus.

Sir Rufo 13. Okt 2014 18:27

AW: Bilder speichern
 
@himitsu

Du weisst, dass es sich um FMX handelt? Da kann
Delphi-Quellcode:
TBitmap
erheblich mehr.

Olli73 13. Okt 2014 18:29

AW: Bilder speichern
 
Zitat:

Zitat von himitsu (Beitrag 1275750)
PS:
Delphi-Quellcode:
Bitmap.SaveToFile(... + 'myfile.jpg');
speichert zwar das Bild in einer Datei, aber auch wenn die Datei *.jpg heißt, ist darin natürlich ein Bitmap (*.bmp), da Bitmap halt ein Bitmap ist und auch nur Bitmaps speichern kann.

Zumindest Firemonkey/XE5 ist intelligenter als man denkt:

Delphi-Quellcode:
procedure TBitmap.SaveToFile(const AFileName: string; const SaveParams: PBitmapCodecSaveParams = nil);
begin
  TBitmapCodecManager.SaveToFile(AFileName, Self, SaveParams);
end;


class function TBitmapCodecManager.SaveToFile(const AFileName: string; const Bitmap: TBitmap;
  const SaveParams: PBitmapCodecSaveParams = nil): Boolean;
var
  Codec: TCustomBitmapCodec;
  Descriptor: TBitmapCodecClassDescriptor;
begin
  Result := False;
  if Assigned(FBitmapCodecClassDescriptors) then
    for Descriptor in FBitmapCodecClassDescriptors do
      if SameText(ExtractFileExt(AFileName), Descriptor.Extension, loUserLocale) and Descriptor.CanSave then
      begin
        Codec := Descriptor.BitmapCodecClass.Create;
        try
          Result := Codec.SaveToFile(AFileName, Bitmap, SaveParams);
        finally
          Codec.Free;
        end;
      end;
end;
Ich war auch (vor einiger Zeit) erstaunt, dass das so einfach geht.

Gruß,
Olli

Edit: Ich war zu lahm...

Sir Rufo 13. Okt 2014 18:38

AW: Bilder speichern
 
@Olli73

Evtl. war ich nur schneller :mrgreen:

himitsu 13. Okt 2014 19:34

AW: Bilder speichern
 
Zitat:

Zitat von Sir Rufo (Beitrag 1275759)
@himitsu

Du weisst, dass es sich um FMX handelt? Da kann
Delphi-Quellcode:
TBitmap
erheblich mehr.

Sicher?
Aber warum heißt es dann TBitmap und nicht TBildirgendwas? :shock:

Sir Rufo 13. Okt 2014 20:36

AW: Bilder speichern
 
Zitat:

Zitat von himitsu (Beitrag 1275771)
Zitat:

Zitat von Sir Rufo (Beitrag 1275759)
@himitsu

Du weisst, dass es sich um FMX handelt? Da kann
Delphi-Quellcode:
TBitmap
erheblich mehr.

Sicher?
Aber warum heißt es dann TBitmap und nicht TBildirgendwas? :shock:

Ja, kuckst du Doku Delphi-Referenz durchsuchenFMX.Graphics.TBitmap ;)

himitsu 13. Okt 2014 20:44

AW: Bilder speichern
 
Na toll, in der VCL wird also doch nichts mehr weiterentwickelt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz