Hallo Zusammen
Ich bin an einer Prozedur, welche JPG-Bilder öffnet, in TBitmap32 umwandelt, dort die grösse umrechnet und dann wieder als jpg speichert.
Es muss ein TBitmap32 sein weil ich später noch ein Logo halbtransparent raufzeichen möchte...
hier der Code:
Delphi-Quellcode:
var
e :TListElement;
hp :TpListElement;
i :Integer;
img1 :TBitmap32;
img2 :TBitmap;
jpg :TJPEGImage;
dheight,
dwidth,
nheight,
nwidth,
quali :Integer;
begin
dwidth :=StrToInt(EdNWidth.Text);
dheight:=StrToInt(EdNHeight.Text);
quali :=StrToInt(EdQuali.Text);
i:=1;
hp:=pFirst;
while hp<>pLast do begin
hp:=hp^.pNext;
inc(i);
end;
Pb.Max:=i;
i:=1;
if FirstListEl(e) then begin
repeat
jpg:=TJPEGImage.Create;
jpg.Performance:=jpBestQuality;
jpg.CompressionQuality:=100;
jpg.LoadFromFile(e.pfad+'\'+e.name);
img1:=TBitmap32.Create;
img1.Assign(jpg);
jpg.Free;
if (img1.Height/img1.Width)>=(dheight/dwidth) then begin
nheight:=dheight;
nwidth :=round(nheight*img1.width/img1.height);
end
else begin
nwidth:=dwidth;
nheight :=round(img1.Height/img1.Width*nwidth);
end;
img2:=TBitmap.Create;
img2.Width:=nwidth;
img2.Height:=nheight;
img1.DrawTo(img2.Canvas.Handle,
rect(0,0,nwidth,nheight),
rect(0,0,img1.Width,img1.Height));
jpg:=TJPEGImage.Create;
jpg.Performance:=jpBestQuality;
jpg.CompressionQuality:=quali;
jpg.Assign(img2);
jpg.SaveToFile(e.pfad+'\_'+e.name);
inc(i);
Pb.Position:=i;
jpg.Free;
img1.Free;
img2.Free;
until not NextListEl(e);
end;
Pb.Position:=0;
Also und jetzt das Problem. Eigentlich funktioniert alles ganz schön. Ausser, dass irgendetwas mit den Farben nicht ganz stimmt. Das Orginalbild (1024*768) sieht so aus:
http://lorenz.koestler.ch/other/1.JPG
Und das umgerechnete Bild, welches nun eine Auflösung von (800*600) hat sieht so aus
as Orginalbild (1024*768) sieht so aus:
http://lorenz.koestler.ch/other/_1.JPG
Weiss jemand woran das liegt? Ich vermute, dass ich irgendetwas mit den Farbeinstellungen von der TBitmap32 Variabel falsch mache, nur was?
Hat vielleicht jemand noch eine Idee, was ich noch verschnellern könnte?
[edit=thomasdrewermann] Mfg, thomasdrewermann[/edit]