Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   jpg Qualität (https://www.delphipraxis.net/160118-jpg-qualitaet.html)

thomas2009 28. Apr 2011 14:18

jpg Qualität
 
Hi

ich versuche die Bildqualität zu ändern aber es passiert nichts
woran liegt es ?
Delphi-Quellcode:
PROCEDURE BMPtoJPG (CONST myBMP: TBitmap; myJPG: TPicture);
VAR
Bitmap: TBitmap;
JPEG : TJPEGImage;
BEGIN
Bitmap := TBitmap.Create;
JPEG := TJPEGImage.Create;
TRY
Bitmap.Assign(myBMP);
JPEG.CompressionQuality := StrToInt(Form1.edit1.Text);
JPEG.Assign(Bitmap);
myJPG.Assign(JPEG);
FINALLY
Bitmap.Free;
JPEG.Free
END;
END;


procedure TForm1.Button1Click(Sender: TObject);
begin
image2.picture:= nil;
BMPtoJPG(Image1.Picture.Bitmap,Image2.Picture);
end;

himitsu 28. Apr 2011 14:24

AW: jpg Qualität
 
Zitat:

Changing properties like CompressionQuality does not force compression. To force compression, call Compress.
z.B. aus http://docs.embarcadero.com/products..._Compress.html

Und ich bin mir ganz sicher, daß sowas auch schon in der Original-Hilfe dieser Komponente drinstand.

DeddyH 28. Apr 2011 14:29

AW: jpg Qualität
 
OT: Der try-finally-Block ist btw auch falsch gesetzt, entweder mit nil initialisieren oder 2 verschachtelte Blöcke benutzen.

thomas2009 28. Apr 2011 14:54

AW: jpg Qualität
 
Nein, wieso dann funktioniert es, wenn ich die Bitmap als file lade z.B.:
Delphi-Quellcode:
PROCEDURE BMPtoJPG2 (CONST myBMPName: String; myJPGName: String);
VAR
Bitmap: TBitmap;
JPEG : TJPEGImage;
BEGIN
Bitmap := TBitmap.Create;
JPEG := TJPEGImage.Create;
TRY
Bitmap.LoadFromFile('myBMP.bmp');
JPEG.CompressionQuality := StrToInt(Form1.edit1.Text);
JPEG.Assign(Bitmap);
//myJPG.Assign(JPEG);
JPEG.SaveToFile('myJPEG.jpg');
FINALLY
Bitmap.Free;
JPEG.Free
END;
END;

procedure TForm1.Button2Click(Sender: TObject);
begin
image2.picture:= nil;
BMPtoJPG2('myBMP.bmp','myJPEG.jpg');
Image2.Picture.LoadFromFile('myJPEG.jpg');
end;
:lol:

Zacherl 28. Apr 2011 14:58

AW: jpg Qualität
 
Es liegt nicht am Laden des Bitmaps, sondern am Speichern des JPEGs. Innerhalb von SaveToFile() wird halt vermutlich Compress() aufgerufen, was beim einfachen zuweisen der CompressionQuality NICHT der Fall ist, wie himitsu bereits sagte.

BTW: Zum ersten Code: Du übergibst einen Bitmap Parameter, erstellst dann aber intern noch ein Bitmap und kopierst das Bild vom Parameter ins interne Bitmap, nur um dann das Bild aus dem internen Bitmap ins JPEG zu kopieren hääääää? Merkst du was?

thomas2009 28. Apr 2011 15:04

AW: jpg Qualität
 
vermutlich ?
Bist Du nicht sicher ? Ich habe mindestens getestet

Ok, wenn es so wäre, wie muss ich dann genau meinen Code (1.Code) bauen, damit JPEG sicher komprimiert wird?

Ich verstehe den Vorschlag nicht :?

DeddyH 28. Apr 2011 15:07

AW: jpg Qualität
 
Wenn Du schon die zitierte Hilfe nicht verstehst, solltest Du Delphi einfach deinstallieren und Dir ein anderes Hobby suchen :?

Phoenix 28. Apr 2011 15:09

AW: jpg Qualität
 
Zitat:

Zitat von thomas2009 (Beitrag 1097447)
Ok, wenn es so wäre, wie muss ich dann genau meinen Code (1.Code) bauen, damit JPEG sicher komprimiert wird?

Ich verstehe den Vorschlag nicht :?

Noch einmal ganz deutlich: WIR schreiben DEINEN Code nicht. Und wenn Du es nicht verstehst, LERNE. Oder lass es bleiben. Wir machen hier jedenfalls dicht. Es reicht so langsam endgültig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:26 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