Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Graphic32: Bild ist schwarz nach SetSize (https://www.delphipraxis.net/44465-graphic32-bild-ist-schwarz-nach-setsize.html)

Die Muhkuh 19. Apr 2005 20:14


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:
Pic := TBitmap32.Create;
Pic.StretchFilter := sfLanczos;
Pic.LoadFromFile(edDir.Text + aName);
Pic.SetSize(640, 480);
Pic.SaveToFile(edSaveAs.Text + aName);
Pic.Free;
(Da fehlen dsas try und finally, ist aber im Code vorhanden)

Hab ich irgendwo noch ein Bock?

[edit]Delphi-Tags richtig gesetzt. Pfui, pfui, Mods, keiner hats gemerkt :mrsblue: [/edit]

dizzy 20. Apr 2005 02:09

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.

Die Muhkuh 20. Apr 2005 12:12

Re: Graphic32: Bild ist schwarz nach SetSize
 
Hi Fabian,

ich werde es ma versuchen und (wenn ich die Lösung hab) hier posten

Die Muhkuh 20. Apr 2005 12:39

Re: Graphic32: Bild ist schwarz nach SetSize
 
Hi,

ich hab das jetzt mal so gemacht, wie Fabian es sagte:

Delphi-Quellcode:
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;
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".

Hab das ganze versucht mit IrfanView zu öffnen und der meldet folgendes:

Code:
---------------------------
IrfanView
---------------------------
G:\Bilder\Berlin2005\Bilder geändert\IMG0-102.JPG : Kann Dateiheader nicht lesen!

Unbekanntes Bildformat !
---------------------------
OK  
---------------------------
Tja... :cry:

Was könnte ich nun tun?

Khabarakh 20. Apr 2005 13:08

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.

Die Muhkuh 20. Apr 2005 13:10

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

Khabarakh 20. Apr 2005 13:18

Re: Graphic32: Bild ist schwarz nach SetSize
 
Ich sehe gerade, dass du deinen Code geändert hast:
Delphi-Quellcode:
//Pic.DrawTo(TempPic, 320, 240); Geht bei dem auch nicht.
Was meinst du damit? Ohne diese Zeile wird jedenfalls gar nichts in TempPic kopiert, Pic.Draw eins weiter oben kopiert ja in sich selbst :? .

Die Muhkuh 20. Apr 2005 13:22

Re: Graphic32: Bild ist schwarz nach SetSize
 
Zitat:

Zitat von Khabarakh
Ich sehe gerade, dass du deinen Code geändert hast:
Delphi-Quellcode:
//Pic.DrawTo(TempPic, 320, 240); Geht bei dem auch nicht.
Was meinst du damit? Ohne diese Zeile wird jedenfalls gar nichts in TempPic kopiert, Pic.Draw eins weiter oben kopiert ja in sich selbst :? .

Hi,

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:
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;
Jetzt klappt zwar das abspeichern, aber das Bild ist immernoch schwarz.

Khabarakh 20. Apr 2005 13:26

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: .

Die Muhkuh 20. Apr 2005 13:30

Re: Graphic32: Bild ist schwarz nach SetSize
 
Zitat:

Zitat von Khabarakh
Ich denke, es sollte Pic.DrawTo(TempPic, 0, 0) heißen, so kopierst du es ja außerhalb von TempPic :wink: .

Hi,

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 04:45 Uhr.
Seite 1 von 2  1 2      

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