![]() |
Graphic32: Bild ist schwarz nach SetSize
Hi,
ich lade ein Bild in ein TBitmap32. Nach dem laden rufe ich SetSize auf und speichere das Bild ab. Aber das Bild ist schwarz. Code:
Delphi-Quellcode:
(Da fehlen dsas try und finally, ist aber im Code vorhanden)
Pic := TBitmap32.Create;
Pic.StretchFilter := sfLanczos; Pic.LoadFromFile(edDir.Text + aName); Pic.SetSize(640, 480); Pic.SaveToFile(edSaveAs.Text + aName); Pic.Free; Hab ich irgendwo noch ein Bock? [edit]Delphi-Tags richtig gesetzt. Pfui, pfui, Mods, keiner hats gemerkt :mrsblue: [/edit] |
Re: Graphic32: Bild ist schwarz nach SetSize
So kannst du kein Bild mit der gr32 vergrößern/verkleinern. Du brauchst 2 Bitmap32. In eines lädsts du dein Original. Dann den StretchFilter (ich weiss nicht mehr in welchem der beiden) setzen, und dann das Original mittels TBitmap32.Draw(To) auf das zweite in Zielgröße drauf packen.
Das dann abspeichern, und fertig. |
Re: Graphic32: Bild ist schwarz nach SetSize
Hi Fabian,
ich werde es ma versuchen und (wenn ich die Lösung hab) hier posten |
Re: Graphic32: Bild ist schwarz nach SetSize
Hi,
ich hab das jetzt mal so gemacht, wie Fabian es sagte:
Delphi-Quellcode:
Aber jetzt lässt sich das gespeicherte Bild nicht mehr öffnen. Es wird zwar als Jpg abgespeichert, aber es kommt immer "Keine Vorschau verfügbar".
Pic := TBitmap32.Create;
TempPic := TBitmap32.Create; try Pic.Draw(320, 240, Pic); //Pic.DrawTo(TempPic, 320, 240); Geht bei dem auch nicht. TempPic.SaveToFile(edSaveAs.Text + aName); finally Progress.StepBy(1); FreeAndNil(Pic); FreeAndNil(TempPic); end; Hab das ganze versucht mit IrfanView zu öffnen und der meldet folgendes:
Code:
Tja... :cry:
---------------------------
IrfanView --------------------------- G:\Bilder\Berlin2005\Bilder geändert\IMG0-102.JPG : Kann Dateiheader nicht lesen! Unbekanntes Bildformat ! --------------------------- OK --------------------------- Was könnte ich nun tun? |
Re: Graphic32: Bild ist schwarz nach SetSize
Bist du dir sicher, dass bei DrawTo die Größe des Destination-Bitmaps angepasst wird :gruebel: ?
Schau dir mal zur Laufzeit die Größe von TempPic an oder versuch auch mal, es als BMP zu speichern. |
Re: Graphic32: Bild ist schwarz nach SetSize
tja, keine Ahnung. Ich hab einfach ma beides gestest. Aber ich kann das ja nicht sehen, da der Header fehlt und ich keine Informationen über das Bild bekomme.
Das mit dem BMP ist keine schlechte idee. werd ich mal machen |
Re: Graphic32: Bild ist schwarz nach SetSize
Ich sehe gerade, dass du deinen Code geändert hast:
Delphi-Quellcode:
Was meinst du damit? Ohne diese Zeile wird jedenfalls gar nichts in TempPic kopiert, Pic.Draw eins weiter oben kopiert ja in sich selbst :? .
//Pic.DrawTo(TempPic, 320, 240); Geht bei dem auch nicht.
|
Re: Graphic32: Bild ist schwarz nach SetSize
Zitat:
sorry. Ich hab vergessen das vorher schon auszuklammern. Wollte damit andeuten, dass ich es sowohl mit Draw als auch mit DrawTo probiert habe, welches aber auch nicht ging. Das mit Pic.Draw hab ich auch schon gesehen und verbessert (allerdings nicht hier in der DP), aber an dem lags auch nicht. Aber ich hab zumindest ein Teilfehler gefunden. Das ganze musste so heißen:
Delphi-Quellcode:
Jetzt klappt zwar das abspeichern, aber das Bild ist immernoch schwarz.
Pic := TBitmap32.Create;
TempPic := TBitmap32.Create; try TempPic.SetSize(320, 240); Pic.DrawTo(TempPic, 320, 240); Geht bei dem auch nicht. TempPic.SaveToFile(edSaveAs.Text + aName); finally Progress.StepBy(1); FreeAndNil(Pic); FreeAndNil(TempPic); end; |
Re: Graphic32: Bild ist schwarz nach SetSize
Ich denke, es sollte Pic.DrawTo(TempPic, 0, 0) heißen, so kopierst du es ja außerhalb von TempPic :wink: .
|
Re: Graphic32: Bild ist schwarz nach SetSize
Zitat:
danke. Jetzt sind wa soweit, dass ein 320x240 großes Stückchen des Bildes abgespeichert wird. Jetzt muss ich bloß noch schaffen, dass das Bild kleiner gemacht wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 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