Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 05, 2025 06:07

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Problem mit TJPEGImage
BeitragVerfasst: Mo Mär 28, 2011 12:37 
Offline
DGL Member
Benutzeravatar

Registriert: So Jan 07, 2007 21:26
Beiträge: 130
Wohnort: mal hier mal da mal irgendwo
Hi Leute,

ich bekomm (fast) immer eine Fehlermeldung [EOutOfRessources] beim Speichern von einer TJPEGImage, könnt ihr mal drüber schauen, was ich falsch mache?

Code:
procedure TUpload.buildimg;
var b: TBitmap;
    j: TJPEGImage;
    dc: HDC;
begin
  b := TBitmap.Create;
  try
    b.Width := Area.Rect.Right-Area.Rect.Left;
    b.Height := Area.Rect.Bottom-Area.Rect.Top;

    dc := GetDC(Area.Wnd);
    try
      BitBlt(b.Canvas.Handle,0,0,b.Width,b.Height, dc,Area.Rect.Left,Area.Rect.Top,SRCCOPY);
    finally
      ReleaseDC(Area.Wnd, dc);
    end;

    j := TJPEGImage.Create;
    try
      j.Assign(b);
      j.CompressionQuality := 100;
      j.SaveToFile('./tmp.jpg'); // <--- hier kommt der fehler!
    finally
      j.Free;
    end;
  finally
    b.Free;
  end;
end;


wenn ich statt "j.SaveToFile('./tmp.jpg');" "b.SaveToFile('./tmp.jpg');" schreibe kommt keine Fehlermeldung, aber Bitmap is mir dann doch nen bischen zu groß zum hochladen :S

MfG
bubble

PS: Die Bilder sind alle so ca. 500x300 Pixel groß, und mein Arbeitsspeicher ist auch nich voll, genauso wenig die Festplatte und andere Systemressourcen kenn ich nicht .____.

_________________
Wenn Worte nichts als Worte sind,
dann müssen's Steine sein!
Solange - bis sie pleite sind - schmeißt Fensterscheiben ein!

- Fidl Kunterbunt -


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mit TJPEGImage
BeitragVerfasst: Mo Mär 28, 2011 12:54 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Vielleicht hat deine Anwendung keine Schreibrechte auf der Festplatte, die Datei existiert bereits oder sowas.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mit TJPEGImage
BeitragVerfasst: Mo Mär 28, 2011 13:04 
Offline
DGL Member
Benutzeravatar

Registriert: So Jan 07, 2007 21:26
Beiträge: 130
Wohnort: mal hier mal da mal irgendwo
Naja wenn ich über die TBitmap die Datei speicher - fälschlicher Weise - mit der Dateierweiterung jpg,
dann funktioniert es einwandfrei =/

Hm... werd ich mich am besten mal mit dem Dateiformat JPEG beschäftigen und es dann manuell konvertieren, falls sich keine Lösung findet :(

MfG
bubble

EDIT:
Sonderbarer Weise funktioniert es so:

Code:
procedure TUpload.buildimg;
  procedure BMPtoJPG(const BMPpic, JPGpic: string);
  var Bitmap: TBitmap;
      JpegImg: TJpegImage;
  begin
    Bitmap := TBitmap.Create;
    try
      Bitmap.LoadFromFile(BMPpic) ;
      JpegImg := TJpegImage.Create;
      try
        JpegImg.Assign(Bitmap) ;
        JpegImg.SaveToFile(JPGpic) ;
      finally
        JpegImg.Free
      end;
    finally
      Bitmap.Free
    end;
  end;
var b: TBitmap;
    dc: HDC;
begin
  b := TBitmap.Create;
  try
    b.Width := Area.Rect.Right-Area.Rect.Left;
    b.Height := Area.Rect.Bottom-Area.Rect.Top;

    dc := GetDC(Area.Wnd);
    try
      BitBlt(b.Canvas.Handle,0,0,b.Width,b.Height, dc,Area.Rect.Left,Area.Rect.Top,SRCCOPY);
    finally
      ReleaseDC(Area.Wnd, dc);
    end;
    DeleteFile('./tmp.bmp');
    b.SaveToFile('./tmp.bmp');
  finally
    b.Free;
  end;
  BMPtoJPG('./tmp.bmp','./tmp.jpg');
  DeleteFile('./tmp.bmp');
end;

_________________
Wenn Worte nichts als Worte sind,
dann müssen's Steine sein!
Solange - bis sie pleite sind - schmeißt Fensterscheiben ein!

- Fidl Kunterbunt -


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mit TJPEGImage
BeitragVerfasst: Mo Mär 28, 2011 13:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Wobei das JPEG Format alles andere als Trivial ist, da muss man schon recht sattelfest in Sachen Mathe (Diskrete Kosinustransformation!) sein. Denke, es geht schneller, wenn du den Bug findest. :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mit TJPEGImage
BeitragVerfasst: Mo Mär 28, 2011 13:52 
Offline
DGL Member
Benutzeravatar

Registriert: So Jan 07, 2007 21:26
Beiträge: 130
Wohnort: mal hier mal da mal irgendwo
Ja das hab ich auch gemerkt >_<'

Aber ich find den Fehler echt nicht. Guck dir mal den Code von meinem zweiten Post an, es ist an sich das gleiche aber funktioniert. Es ist nur eine äußerst unschöne Lösung =/

_________________
Wenn Worte nichts als Worte sind,
dann müssen's Steine sein!
Solange - bis sie pleite sind - schmeißt Fensterscheiben ein!

- Fidl Kunterbunt -


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mit TJPEGImage
BeitragVerfasst: Mo Mär 28, 2011 14:08 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Vielleicht suchst du dir was anderes als TJpegImage....wird ja nicht die einzige Lib sein die JPG speichern kann.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mit TJPEGImage
BeitragVerfasst: Mo Mär 28, 2011 19:27 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Nur mal aus interesse: Versuch mal, anstatt die Bitmap auf die Festplatte zu speichern, noch eine TBitmap dazwischen zu hängen. Also:
Code:
var B1, B2: TBitmap; J: TJPEGImage;
begin
  // dein dc zeug
  B2.Assign(B1);
  J.Assign(B2);
  // speichern

Wenn das nicht geht, versuch dann mal B2.SaveToFile zu machen.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 14 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 14 Queries | GZIP : On ]