Установка уровня сжатия при сохранении файлов JPEG | Delphi
Приведу пример установки уровня сжатия при сохранении файлов JPEG, используя Delphi и GDI+.
uses GDIPAPI, GDIPOBJ, GDIPUTIL;
:
procedure TForm1.FormCreate(Sender: TObject);
var
img: TGPImage;
encoderClsid: TGUID;
stat: TStatus;
encoderParameters: TEncoderParameters;
quality: ULONG;
error_string: string;
i: Integer;
begin
// загрузим файл
img := TGPImage.Create('c:\Cat.bmp');
// получаем идентификатор класса кодировщика jpeg
GetEncoderClsid('image/jpeg', encoderClsid);
// инициализируем объект, хранящий параметры кодировщика
encoderParameters.Count := 1;
encoderParameters.Parameter[0].Guid := EncoderQuality; // будем менять качество сжатия
encoderParameters.Parameter[0].Type_ := EncoderParameterValueTypeLong;
encoderParameters.Parameter[0].NumberOfValues := 1;
// сохраним набор картинок с разной степенью сжатия
i := 25;
while i <= 100 do begin
quality := i;
encoderParameters.Parameter[0].Value := @quality; // указываем коэффициент сжатия
// сохраняем картинку
stat := img.Save('c:\Cat'+IntToStr(i)+'.jpeg', encoderClsid, @encoderParameters);
if(stat = Ok) then ShowMessage('ВСЕ В ПОРЯДКЕ') else ShowMessage('ОШИБКА СОХРАНЕНИЯ ');
error_string := GetStatus(stat);
inc(i, 25);
end;
end;