Примеры Delphi и C# из жизни

Примеры программирования на языках Delphi, C#

 




Недвижимость срочно белорусия таунхаусы; Строительство и реконструкция: показывать строительство дачных домов, - построим дом вместе!

Установка уровня сжатия при сохранении файлов 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;