Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2021, 01:46   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 623
По умолчанию Уменьшить картинку - Есть изображение каких-то там размеров. Нужно уменьшить его вдвое по всем параметрам. процедура уменьшает размер картинки (jpg) в два раза

Добрый день
Задача такая:

Есть изображение каких-то там размеров. Нужно уменьшить его вдвое по всем параметрам, потому что занимает уж слишком много места, очень долго загружается, а такая четкость не нужна
Kronos913 вне форума Ответить с цитированием
Старый 19.03.2021, 03:00   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Что значит "есть изображение каких-то там размеров"?
northener вне форума Ответить с цитированием
Старый 19.03.2021, 10:15   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Набросал пример, процедура уменьшает размер картинки (jpg) в два раза, при этом можно поиграться с параметром "степень сжатия", чтобы сделать файл еще меньше:

Код:
uses JPEG;

procedure HalveImage(const SourceFileName, DestFileName: string);
var
  jpg: TJPEGImage;
  bmp, bmp2: TBitMap;
  Rect: TRect;
begin
  jpg := TJPEGImage.Create;
  jpg.LoadFromFile(SourceFileName);
  bmp := TBitmap.Create;
  bmp.Assign(jpg);
  bmp2 := TBitMap.Create;
  bmp2.Width := bmp.Width div 2;
  bmp2.Height := bmp.Height div 2;
  with Rect do begin
    Left := 0;
    Top := 0;
    Right := bmp2.Width;
    Bottom := bmp2.Height;
  end;
  bmp2.Canvas.StretchDraw(Rect, bmp);
  bmp.Free;
  jpg.Assign(bmp2);
  bmp2.Free;
  // степень сжатия (1..100), чем меньше, тем компактнее файл
  jpg.CompressionQuality := 70;
  jpg.SaveToFile(DestFileName);
  jpg.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  HalveImage('1.jpg', '2.jpg');
  ShowMessage('ok');
end;
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C++] Дана квадратная целочисленная матрица порядка M. Уменьшить в два раза все элементы, лежащие ниже главной диагонали lunarBeast Помощь студентам 1 15.05.2018 19:34
Найти в массиве отрицательные элементы и уменьшить их вдвое Настя22 Паскаль, Turbo Pascal, PascalABC.NET 1 15.02.2011 07:38
Уменьшить картинку Krasi PHP 10 10.08.2010 19:53
Нужно уменьшить размер изображения. AnKor94 Общие вопросы Delphi 3 08.03.2010 00:21