(Gast)
n/a Beiträge
|
AW: JPEG CompressionQuality ermitteln
26. Okt 2017, 09:39
So wie mir bekannt ist kannst du diese nur zuweisen..
Ich habe meinen eigenen Wrapper..
Delphi-Quellcode:
QualityModeInvalid = -1;
QualityModeDefault = 0;
QualityModeLow = 1; // Best performance
QualityModeHigh = 2; // Best rendering Quality
Delphi-Quellcode:
function GDIP_SaveImageToFile(filename: WideString; image: Cardinal; Quality: Integer
): GPSTATUS; stdcall;
var
rSplit: TSplitStrArray;
encoderCLSID: TGUID;
ext: string;
IntI: Integer;
format: string;
EncoderParameters: PEncoderParameters;
SaveQuality: Integer;
listSize: UINT;
begin
ext := ExtractFileExt(filename);
rSplit := Split(IMAGETYPES, ';');
for IntI := 0 to High(rSplit) do
begin
if rSplit[IntI] = ext then
begin
case IntI of
0:
format := 'image/jpeg';
1:
format := 'image/png';
2:
format := 'image/bmp';
3:
format := 'image/gif';
4:
format := 'image/tiff';
5:
format := 'image/x-icon';
6:
format := 'image/x-emf';
7:
format := 'image/x-wmf';
else
begin
result := UnknownImageFormat;
exit;
end;
end;
break;
end;
end;
SkinEngine.GetEncoderClsid(format, encoderCLSID);
GdipGetEncoderParameterListSize(Image, @encoderCLSID, listSize);
getmem(EncoderParameters, listSize);
GdipGetEncoderParameterList(Image, @encoderClsid, listSize, EncoderParameters);
SaveQuality := max(min(Quality, 100), 0);
if (SaveQuality = 0) then
SaveQuality := 100;
EncoderParameters.Count := 1;
EncoderParameters.Parameter[0].Guid := EncoderQuality;
EncoderParameters.Parameter[0].NumberOfValues := 1;
EncoderParameters.Parameter[0].Type_ := 4;
EncoderParameters.Parameter[0].Value := @SaveQuality;
Result := GdipSaveImageToFile(image, PWideChar(filename), @encoderCLSID, EncoderParameters);
freemem(EncoderParameters, listSize);
end;
so könnte das aussehen.
gruss
Geändert von EWeiss (26. Okt 2017 um 09:45 Uhr)
|
|
Zitat
|