Re: Bild vergrößern mit StretchBlt
Zitat:
Ja, das soll nur zur Vorschau sein. Ich habe - zu Testzwecken - meinen Code geändert. Entschuldigung falls es noch nicht in meinem Paket so war. Es sieht jetzt so aus:
Delphi-Quellcode:
Das verpixelte Aussehen ist nur jetzt so und mir egal. Habe kein anderes Testbild gefunden. Mein Fernziel ist es, ein Programm zu schreiben, dass mir Bilder von Scannern besorgt (einer kann z.B. nur 300 oder 600 dpi) , diese auf DINA4 bei exakt 200 dpi zuschneidet (ich will es einheitlich für ein schon fertiges Archivprogramm) und ggf. noch dreht.
Procedure TForm1.Button5Click(Sender: TObject);
Var H,B : Integer; help,Org : TImage; Begin help:=TImage.Create(self); Org:=TIMage.Create(self); Try Org.Picture.LoadFromFile(OpenDialog1.FileName); SetStretchBltMode(help.Canvas.Handle,HALFTONE); B:=Org.Picture.Width; H:=Org.Picture.Height; ShowMessage(FormatFloat('#,##0',B)+'x'+FormatFloat('#,##0',H)); If H>B Then Begin help.Picture.Graphic.Width:=1660; help.Picture.Graphic.Height:=2340; StretchBlt(help.Canvas.Handle, // Ziel 0,0,1660,2340, // Ziel Ausmaße Org.Canvas.Handle, // Quelle 0,0,B,H, // Ausmaße Quelle SRCCOPY) End Else Begin help.Picture.Graphic.Width:=2340; help.Picture.Graphic.Height:=1660; StretchBlt(help.Canvas.Handle, // Ziel 0,0,2340,1660, // Ziel Ausmaße Org.Canvas.Handle, // Quelle 0,0,H,B, // Ausmaße Quelle SRCCOPY); End; help.Picture.Bitmap.SaveToFile(OpenDialog1.FileName+'_neu.bmp'); Finally help.Free; Org.Free; End; End; Gruß, Alex |
Re: Bild vergrößern mit StretchBlt
Liste der Anhänge anzeigen (Anzahl: 2)
nö da hat sich nichts überschnitten ..
Hier ein Bild.. denke so soll es sein oder ?
Delphi-Quellcode:
gruss Emil
Procedure TForm1.Button6Click(Sender: TObject);
var tmpImage : TImage; Begin tmpImage := TImage.create(self); If OpenDialog1.Execute Then Begin tmpImage.Picture.Bitmap.LoadFromFile(OpenDialog1.FileName); StretchBlt(Image1.Canvas.Handle, // Ziel 0,0,Image1.Width,Image1.Height, // Ziel Ausmaße tmpImage.Canvas.Handle, // Quelle 0,0,tmpImage.Picture.Bitmap.Width,tmpImage.Picture.Bitmap.Height, // Ausmaße Quelle SRCCOPY); Button3.Enabled:=True; Button4.Enabled:=True; Button5.Enabled:=True; End; End; |
Re: Bild vergrößern mit StretchBlt
Wenn du immer noch nicht klar kommst hier das ergebnis
Nur unteren Bereich geändert!
Delphi-Quellcode:
gruss Emil
Procedure TForm1.Button5Click(Sender: TObject);
Var H,B : Integer; help,Org : TImage; Begin help:=TImage.Create(self); Org:=TIMage.Create(self); Try Org.Picture.LoadFromFile(OpenDialog1.FileName); SetStretchBltMode(help.Canvas.Handle,HALFTONE); B:=Org.Picture.Width; H:=Org.Picture.Height; ShowMessage(FormatFloat('#,##0',B)+'x'+FormatFloat('#,##0',H)); If H>B Then Begin help.Picture.Graphic.Width:=1660; help.Picture.Graphic.Height:=2340; StretchBlt(help.Canvas.Handle, // Ziel 0,0,1660,2340, // Ziel Ausmaße Org.Canvas.Handle, // Quelle 0,0,B,H, // Ausmaße Quelle SRCCOPY) End Else //>>>>>>>>>< geändert Begin help.Picture.Graphic.Width:=2340; help.Picture.Graphic.Height:=1660; StretchBlt(help.Canvas.Handle, // Ziel 0,0,help.Picture.Graphic.Width,help.Picture.Graphic.Height, // Ziel Ausmaße Org.Canvas.Handle, // Quelle 0,0,Org.Picture.Bitmap.Width,Org.Picture.Bitmap.Height, // Ausmaße Quelle SRCCOPY); End; // >>>>>>>>>>>> end geändert help.Picture.Bitmap.SaveToFile(OpenDialog1.FileName+'_neu.bmp'); Finally help.Free; Org.Free; End; End; Procedure TForm1.Button6Click(Sender: TObject); Begin If OpenDialog1.Execute Then Begin Image1.Picture.Bitmap.LoadFromFile(OpenDialog1.FileName); Button3.Enabled:=True; Button4.Enabled:=True; Button5.Enabled:=True; End; End; |
Re: Bild vergrößern mit StretchBlt
Zitat:
Ich möchte: 1. Bild laden (egal welche Größe) 2. vergrößern oder verkleinern auf 1660x2340 (= DINA4 bei 200 dpi) 3. DINA4-Bild abspeichern Und so klappt es jetzt endlich, auch wenn Du erster warst:
Delphi-Quellcode:
Danke an alle, die so aktiv mitgedacht haben!!!
Procedure TForm1.Button5Click(Sender: TObject);
Var H,B : Integer; Quelle,Ziel : TImage; Begin If OpenDialog1.Execute Then Begin Quelle:=TImage.Create(self); Ziel:=TImage.Create(self); Try Quelle.Picture.Bitmap.LoadFromFile(OpenDialog1.FileName); B:=Quelle.Picture.Bitmap.Width; H:=Quelle.Picture.Bitmap.Height; If H>B Then Begin Ziel.Width:=1660; Ziel.Height:=2340; StretchBlt(Ziel.Canvas.Handle, // Ziel 0,0,1660,2340, // Ziel Ausmaße Quelle.Canvas.Handle, // Quelle 0,0,B,H, // Ausmaße Quelle SRCCOPY) End Else Ziel.Width:=2340; Ziel.Height:=1660; StretchBlt(Ziel.Canvas.Handle, // Ziel 0,0,2340,1660, // Ziel Ausmaße Quelle.Canvas.Handle, // Quelle 0,0,B,H, // Ausmaße Quelle SRCCOPY); Ziel.Picture.Bitmap.SaveToFile(OpenDialog1.FileName+'_neu.bmp'); Finally Quelle.Free; Ziel.Free; End; End; End; |
Re: [gelöst] Bild vergrößern mit StretchBlt
Zitat:
Das erste war nur ein Beispiel um zu zeigen was du falsch gemacht hast. gruss Emil |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:57 Uhr. |
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