Zitat von
EWeiss:
EDIT:
Verstehe auch nicht warum du von Image1 ausgehst
Hier solltest du das Originale Bitmap verwenden oder willst du das
320xXXX Bitmap abspeichern ?
Das ist dann aber sehr verpixelt.
Denke Image1 ist ein als Vorschaubild gedacht oder?
Die Antworten haben sich alle überschnitten:
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:
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;
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.
Gruß, Alex