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 -
_________________ Wenn Worte nichts als Worte sind, dann müssen's Steine sein! Solange - bis sie pleite sind - schmeißt Fensterscheiben ein! - Fidl Kunterbunt -
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.
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 -
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 network • my 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
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.