![]() |
bmp speichern
Ist dieser Code richtig ?
Delphi-Quellcode:
denn ich bekomme beim speichern nur ein schwarzes Bild in den richtigen abmessungen
// Speichern
procedure TForm7.speichern(Sender: TObject); begin Image1.Picture.Bitmap.SaveToFile('TestBitmap.bmp'); ShowMessage('Bild wurde gespeichert.'); end; ansonsten wird es wieder mal an Lazarus liegen :( denke mal eine andere Methode gibt es nicht das Bild zu speichern oder ? |
Re: bmp speichern
Nur mal so schnell ein Kommentar:
Schreib das doch so:
Delphi-Quellcode:
procedure TForm7.speichern(Sender: TObject);
begin try Image1.Picture.Bitmap.SaveToFile('TestBitmap.bmp'); finally ShowMessage('Bild wurde gespeichert.'); end; end; |
Re: bmp speichern
Versuch einfach mal:
Delphi-Quellcode:
Image1.Picture.SaveToFile();
|
Re: bmp speichern
der code schaut jetzt so aus:
Delphi-Quellcode:
das gespeicherte bild ist aber immer noch komplett schwarz :(
// Speichern
procedure TForm7.speichern(Sender: TObject); begin try Image1.Picture.SaveToFile('TestBitmap.bmp'); finally ShowMessage('Bild wurde gespeichert.'); end; end; |
Re: bmp speichern
Zitat:
MfG Binärbaum |
Re: bmp speichern
Zitat:
|
Re: bmp speichern
Zitat:
|
Re: bmp speichern
das war mir schon klar, hatte es ja auch eingefügt:
Image1.Picture.SaveToFile('TestBitmap.bmp'); siehe obrigen code |
Re: bmp speichern
Zitat:
|
Re: bmp speichern
Wo legst du die Farbtife usw. von dem Bitmap fest?
|
Re: bmp speichern
Moin Jens,
ich habe das gerade mal mit Lazarus getestet: Bild wurde korrekt gespeichert. Wie kommt denn das, was Du speichern willst in das Image rein? Ausserdem habe ich den kompletten Pfad, also inclusive Laufwerk und Verzeichnis, mit angegeben. |
Re: bmp speichern
@ Luckie
wo mache ich was ? ich habe nur diesen Code:
Delphi-Quellcode:
das Bild it selber ein Screenshot welcher in Image1 geladen wird (Screenshot wird mit dem Programm gemacht, also nicht aus einer datei geladen) hier der erste Code dazu:
// Speichern
procedure TForm7.speichern(Sender: TObject); begin try Image1.Picture.SaveToFile('TestBitmap.bmp'); finally ShowMessage('Bild wurde gespeichert.'); end; end;
Delphi-Quellcode:
die Procedur ScreenShot schau dann so aus:
// Screenshot
procedure TForm7.Button3Click(Sender: TObject); var tempBild: TBitmap; begin WindowState := wsminimized; Image1.picture := nil; tempBild := TBitmap.Create; Sleep(1000); ScreenShot(tempBild,Edit2.Text,Edit1.Text,Edit3.Text,Edit4.Text); Image1.Picture.Assign(tempBild); tempBild.Free; WindowState := wsNormal; Form7.BringToFront; SetForegroundWindow(FindWindow(nil,'Screenshot')); end;
Delphi-Quellcode:
also damit lade ich den Screenshot in Image1
procedure ScreenShot(var Bild: TBitMap; startX2 : string; startY2 : string; endeX2 : string; endeY2 : string);
var Mydc : cardinal; MausPos : TPoint; startX, startY, endeX, endeY : integer; startX1, startY1, endeX1, endeY1 : integer; begin startX := strtoint(startX2); endeX := strtoint(endeX2); startY := strtoint(startY2); endeY := strtoint(endeY2); startX1 := startX; endeX1 := endeX; startY1 := startY; endeY1 := endeY; if startX > endeX then begin startX := endeX1; endeX := startX1; end; if startY > endeY then begin startY := endeY1; endeY := startY1; end; MyDc := GetDC(0); GetCursorPos(MausPos); Bild.PixelFormat := pf32bit; begin Bild.Width := endeX - startX; Bild.Height := endeY - startY; if Bild.Width < 0 then Bild.Width := Bild.Width * -1; if Bild.Height < 0 then Bild.Height := Bild.Height * -1; BitBlt(Bild.Canvas.Handle,0,0,endeX,(Screen.Height - startY),Mydc,startX,startY,SRCCOPY); end; ReleaseDC(0, Mydc); end; liegt da vielleicht irgendwo das Problem ? @ Christian Seehase an dem Patrh sollte es nicht liegen, das Bild wird ja angelegt, ist halt nur schwarz welche Version von Lazarus verwendest du denn ? ich habe den SnapShot vom 21.03.2005 genommen also immer das aktuellste was es gibt |
Re: bmp speichern
Moin Jens,
ich habe hier die 0.94 beta vom 03.01.2005. Mit der kann ich Dein Beispiel noch nicht einmal nachvollziehen, da diese Version schon TBitmap.Create nicht kennt. :? |
Re: bmp speichern
Frage: Kann es irgendwie sein, dass das Bild zum Zeitpunkt des Abspeicherns noch immer nil ist?
|
Re: bmp speichern
Mit der Meldung würde ich das auch eher so schreiben:
Delphi-Quellcode:
Sonst zeigt er doch die Meldung auch an, wenn das Bild nicht ordnungsgemäß gespeichert wurde...
procedure TForm7.speichern(Sender: TObject);
begin try Image1.Picture.Bitmap.SaveToFile('TestBitmap.bmp'); ShowMessage('Bild wurde gespeichert.'); except ShowMessage('Bild konnte nicht gespeichert werden.'); end; end; |
Re: bmp speichern
Moin Jens,
versuch' doch mal die Bitmap direkt, also ohne Umweg über Image zu speichern. TBitmap kennt schliesslich auch eine Methode SaveToFile. |
Re: bmp speichern
Liste der Anhänge anzeigen (Anzahl: 1)
@ Alexander
habe jetzt mal deinen Code drinn, Bild wird gespeichert @ Christian Seehase was soll ich machen ? @ all habe jetzt mal nur einen screenshot von einem windowsordner gemacht, sprich von dem gelben icon, also sehr klein, das ergebnis ist ein bild in dieser größe, allerdings ist das jetzt nicht mehr komplett schwarz sondern sehr dunkel mit einigen farblichen stellen, ich hänge das bild hier mal an |
Re: bmp speichern
Sieht denn der Screenshot im Image richtig aus? Also ohne zu speichern?
Hast du schon mal einfach:
Delphi-Quellcode:
probiert? Auch wenn wahrscheinlich einfach nur die Methode im bitmap aufgerufen wird.
Image1.Picture.SaveToFile();
|
Re: bmp speichern
Hier habe ich schon mal nen ScreenShot gepostet, das funktioniert alles, nur das speichern nicht:
![]()
Delphi-Quellcode:
oder besser:
Image1.Picture.SaveToFile();
Delphi-Quellcode:
habe ich auch schon versucht, das interessante war ja der kleine screenshot denn der war nicht mehr komplett schwarz (einfach mal ansehen)
Image1.Picture.SaveToFile('TestBitmap.bmp');
|
Re: bmp speichern
Habe ich schon geschrieben und dass du den String noch einfügen musst, ist ja klar.
Ich weiß momentan leider nicht weiter, eigentlich sollte es funktionieren. Du könntest aber mal dein Programm-Source hochladen, evtl. können wir so besser helfen... |
Re: bmp speichern
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hatte gerade mal kurz Zeit und habe es mit meinem Delphi mal nachgebaut (siehe Anhang). Bei mir funktioniert das wunderbar.
Kannst es ja mal bei dir kompilieren. Kannst ja auch mal versuchen, dass Bitmap direkt, nachdem der Screenshot geschossen wurde, zu speichern. Ohne Umweg über's Image. Dann weist du zumindest, ob es am TImage liegt. |
Re: bmp speichern
welchen string einfügen ?
den code den ich verwende habe ich auf seite 1 gepostet, also wie ich den screenshot mache und wie das bild gespeichert wird, der letztere ist ja jetzt auf deinen code angepasst btw habe ich Lazarus (wegen dem Code) |
Re: bmp speichern
habe jetzt auch mal
Delphi-Quellcode:
versucht, also das
// Screenshot
procedure TForm7.Button3Click(Sender: TObject); var tempBild: TBitmap; begin WindowState := wsminimized; Image1.picture := nil; tempBild := TBitmap.Create; Sleep(1000); ScreenShot(tempBild,Edit2.Text,Edit1.Text,Edit3.Text,Edit4.Text); Image1.Picture.Assign(tempBild); tempBild.SaveToFile('TestBitmap.bmp'); tempBild.Free; WindowState := wsNormal; Form7.BringToFront; SetForegroundWindow(FindWindow(nil,'Screenshot')); end; tempBild.SaveToFile('TestBitmap.bmp'); eingefügt, wieder nen schwarzes bild dein Programm funktioniert, muß also wohl doch an Lazarus liegen :( EDIT: du hast in uses noch das drinn: , Messages, Variants hatte das mal mit eingefügt und neu getestet, aber immer noch das selbe |
Re: bmp speichern
Funktioniert mein Programm nur als kompilierte Version oder kannst du auch das selber kompilieren? Dann funktioniert es nicht?
Wenn ich die richtig verstanden habe, dann scheint das wirklich ein Bug von L. sein. Bleiben dir zwei Möglichkeiten: Schaun, ob du irgendwo günstig Delphi herbekommst oder kucken ob es bereits Bug-Fixes gibt. Den Bug würde ich auf jedenfall melden. |
Re: bmp speichern
Ich kann das doch bei mir nicht öffnen das projekt, st doch von Delphi
gemeldet habe ich das schon, aber der Support dort ...... naja was sol man erwarten ist ja freeware Delphi 5 Standard habe ich bereits am 20. März ersteigert siehe topic hier: ![]() na mal schauen wann es ankommt und ob dann alles funktioniert |
Re: bmp speichern
Ach so, ich dachte man könnte das importieren. Naja, wenn du so wieso Delphi bald hast ;)
|
Re: bmp speichern
ja bald, und hoffentlich :D
hoffe mal das ich mit D5 auch das ganze umsetzen kann, nicht das es zu alt ist :( |
Re: bmp speichern
Zitat:
|
Re: bmp speichern
Thema hat sich erledigt, mit Delphi 5 funktioniert es jetzt :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:58 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