Перейти к содержанию
Fire Monkey от А до Я
  • 0

[Android] Как изменить качество изображения?


estra

Вопрос

Как изменить качество (Quality) изображения? Написал такую функцию, но она не работает

procedure ChangeQuality( SrcBitmap: TBitmap; var DstBitmap: TBitmap; AQuality: Integer );
var
  Stream: TStream;
  Surface: TBitmapSurface;
  SaveParam: TBitmapCodecSaveParams;
begin
   if Assigned( DstBitmap ) then
   begin
      //DstBitmap.SetSize( SrcBitmap.Width, SrcBitmap.Height );
      Stream := TMemoryStream.Create;
      Surface := TBitmapSurface.Create;
      try
        Surface.Assign( SrcBitmap );
        SaveParam.Quality := AQuality; // AQuality = 65
        TBitmapCodecManager.SaveToStream( Stream, Surface, '.jpg', @SaveParam );
        Stream.Position := 0;
        DstBitmap.LoadFromStream( Stream );
      finally
        Surface.Free;
        Stream.Free;
      end;
   end;
end;
Изменено пользователем Brovin Yaroslav
Формат кода
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Администраторы

Сжатие работает. Проверил на Samsung S3.

Код использования:

ChangeQuality(ImageBefore.Bitmap, ImageAfter.Bitmap, 10);

P.S. Чтобы Bitmap можно было передать вторым параметром в вашей процедуре убрал модификатор доступа var.

 

Результат сжатия

post-1-0-38746300-1399990964_thumb.png

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...