Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Jpeg Zu Bitmap Fehler (https://www.delphipraxis.net/107912-jpeg-zu-bitmap-fehler.html)

Larsi 4. Feb 2008 15:08


Jpeg Zu Bitmap Fehler
 
hi,
in meinem code möchte ich eine jpeg datei in eine bmp datei umwandeln. dazu habe ich folgenden code verwendet:
Delphi-Quellcode:
uses jpeg;

procedure JpegToBmp(const Filename: String);
var
 jpeg: TJPEGImage;
 bmp: TBitmap;
begin
 jpeg:=TJPEGImage.Create;
 try
   jpeg.LoadFromFile(Filename);
   bmp:=TBitmap.Create;
   try
     bmp.Assign(jpeg);
     bmp.SaveToFile(ChangeFileExt(Filename, '.bmp'));
   finally
     bmp.free;
   end;
 finally
   jpeg.free;
 end;
end;
Delphi-Quellcode:
if radiobutton1.checked = true then begin
JpegToBmp(ExtractFilePath(Application.ExeName) + '\Image' + inttostr(i) + '.jpg');
end;
Aber immer wenn der Code ausgeführt werden soll, kommt die Fehlermeldung "Jpeg Fehler oder Error #53"!!!

Hoffe ihr könnt mir bei diesem problem helfen!


MFG Lars Wiltfang

Kroko1999 4. Feb 2008 15:11

Re: Jpeg Zu Bitmap Fehler
 
(a)
Delphi-Quellcode:
if RadioButton.checked then
sollte nur verwendet werden, mal die Suche hier benutzen!
(b) Ist der Dateiname (Path+FileName) richtig?
[Edit]
(c) Notfalls die Größe/Pixelformat selbst setzen und per Draw ins Bitmap "kopieren"

Bernhard Geyer 4. Feb 2008 15:11

Re: Jpeg Zu Bitmap Fehler
 
Evtl. eine JPEG-Codierung die von der Delphi-Implementierung nicht erkannt/unterstützt wird?

turboPASCAL 4. Feb 2008 15:13

Re: Jpeg Zu Bitmap Fehler
 
Schon mal eine andere JPEG - Datei versucht ? Möglicher Weise ist diese Jpeg def. oder hat eine
andere Kompression zB. JPG2000, diese kann die Delphiunit für JPEG's nicht ab.

Den Fehler findest du (mit Hilfe der DP-eigenen Suche) öfters hier in der DP. ;)

Larsi 4. Feb 2008 15:14

Re: Jpeg Zu Bitmap Fehler
 
was? also ich hab bei uses jpeg eingebunden wenn du dass meinst :) und der dateiname ist eigentlich auch richtig! Soll ich mal den GAAAAAAAAAAAAnzen code posten?


hab das jpeg zuvor hiermit erzeugt:
Delphi-Quellcode:
SaveWebcamPictureDIB(PChar(ExtractFilePath(Application.ExeName) + '\Image' + inttostr(i) + '.jpg'),handle1);

Klaus01 4. Feb 2008 15:19

Re: Jpeg Zu Bitmap Fehler
 
Hallo,

ich weiß nicht ob es etwas ausmacht, aber ExtractFilepath hat schon einen BackSlash am Ende.
Ein weiterer wäre dann doppelt.

Grüße
Klaus

igel457 4. Feb 2008 15:20

Re: Jpeg Zu Bitmap Fehler
 
Ähm, dadurch das du einem DIB die Endung JPG anhängst wird es noch lange kein JPEG... Oder verstehe ich da jetzt etwas falsch?

Die Muhkuh 4. Feb 2008 15:21

Re: Jpeg Zu Bitmap Fehler
 
Nur weil Du als .jpg abspeicherst, ist es noch lange keine.

Du speicherst eine *.dib-Datei ab und keine JPEG-Datei.

Larsi 4. Feb 2008 15:22

Re: Jpeg Zu Bitmap Fehler
 
aha und was muss ich da machen? ps offtopic kann man da beim abspeichen vielleicht gleich noch son qualität kleiner machen ? offtopic

Die Muhkuh 4. Feb 2008 15:24

Re: Jpeg Zu Bitmap Fehler
 
Eine DIB-Datei kannst Du wie ein Bitmap handhaben. Das heißt, Du musst das Bitmap erst in ein jpeg umwandeln, wenn Du es als solchen speichern willst. Wie das geht? Schau Dir Deine Procedure zum Umwandeln von JPEG zu Bitmap mal an und drehe dessen Funktion einfach um.

Die Qualität kannst Du per .Quality einstellen.

Larsi 4. Feb 2008 15:25

Re: Jpeg Zu Bitmap Fehler
 
wie habe ich das jetzt richtig verstanden??? ich muss also nur jpeg dtat bmp hinten dran schreiben wenn dass sowiso n bitmap ist und kann das mit der konvertier funktion weglasen?

Die Muhkuh 4. Feb 2008 15:27

Re: Jpeg Zu Bitmap Fehler
 
Nein, kannst Du nicht.

Die Funktion "SaveWebcamPictureDIB" speichert eine DIB-Datei. Diese musst Du erst zu einem jpeg umwandeln, wenn Du es als solches willst. Und wie das geht, ist genau das gleiche, wie Deine Funktion oben, nur eben andersrum.

merlin17 4. Feb 2008 15:28

Re: Jpeg Zu Bitmap Fehler
 
evtl. so von Jpeg zu BMP:

Delphi-Quellcode:
 var
  Bitmap: TBitmap;
  Stream: TFileStream;
 begin
    Bitmap := TBitmap.Create;
    try
      Bitmap.LoadFromFile(ParamStr(1));
      with TJPEGImage.Create do
      try
        Assign(Bitmap);
       if ParamCount > 1 then
          CompressionQuality := StrToIntDef(ParamStr(2),100);
        Stream := TFileStream.Create(ChangeFileExt(ParamStr(1),'.JPG'),fmCreate);
        try
          SaveToStream(Stream)
        finally
          Stream.Free
       end
      finally
        Free
      end
    finally
      Bitmap.Free
    end;
  end;

Larsi 4. Feb 2008 15:34

Re: Jpeg Zu Bitmap Fehler
 
sicher? aber in dem codelib beitrag "Webcam speichern in Delphi" oder wie das heißt, war der beispiel code auch gleich als jpeg dh. die prozedur hieß so wie ich sie habe :)

Die Muhkuh 4. Feb 2008 15:35

Re: Jpeg Zu Bitmap Fehler
 
Ja und? Nur weil es da so steht, heißt das nicht, dass es so ist.

Schau Dir die Definition von WM_CAP_FILE_SAVEDIB an, dann wirst Du sehen, dass das Ding halt einfach kein JPEG zurück gibt.

Larsi 4. Feb 2008 15:38

Re: Jpeg Zu Bitmap Fehler
 
ok, nochmal zur qualität als compression: wie muss ich das in meinem code einbinden? kann ich das dirket mit in das Save dib oder wie das heißt machen???

DeddyH 4. Feb 2008 15:40

Re: Jpeg Zu Bitmap Fehler
 
Die Kompression ist eine Eigenschaft von JPEG-Dateien, nicht von DIBs.

Larsi 4. Feb 2008 15:42

Re: Jpeg Zu Bitmap Fehler
 
ist es ncith möglich das hier irgendwie mit einzunehmen???
Delphi-Quellcode:
SaveWebcamPictureDIB(PChar(ExtractFilePath(Application.ExeName) + '\Image' + inttostr(i) + '.jpg'),handle1);
ode hier???:
Delphi-Quellcode:
handle1 := capCreateCaptureWindow('Video',ws_child+ws_visible, 0,
  0, 320, 240, Panel1.Handle, 1); //Wie du siehst, brauchst du ein Panel in diesem Beispiel ;-)
  SendMessage(handle1, WM_CAP_DRIVER_CONNECT, 0, 0);
  SendMessage(handle1, WM_CAP_SET_PREVIEWRATE, 30, 0);
  sendMessage(handle1, WM_CAP_SET_OVERLAY, 1, 0);
  SendMessage(handle1, wm_cap_set_preview, 1, 0);

DeddyH 4. Feb 2008 15:44

Re: Jpeg Zu Bitmap Fehler
 
Vielleicht solltest Du mal nachsehen, was DIB eigentlich heißt.

Device Independent Bitmap

Die Muhkuh 4. Feb 2008 15:50

Re: Jpeg Zu Bitmap Fehler
 
Wie gesagt, DIB <> JPEG. Ein DIB hat keine Kompression, Du musst es erst ins JPEG-Format umwandeln, damit Du es komprimieren kannst.

Am geschicktesten wäre es wohl in "SaveWebcamePictureDIB"

Flips 4. Feb 2008 17:02

Re: Jpeg Zu Bitmap Fehler
 
Der Code in der Codelib. ist von mir, bitte um Entschuldigung wegen dem Missverständnis JPEG <> DIB.
Habe aber schon einen Antrag auf Änderung eingereicht :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:08 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