Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Изменить размер Jpeg и сохранить его в новый файл

Delphi , Графика и Игры , JPEG

Изменить размер Jpeg и сохранить его в новый файл

В Интернете прошел первый конкурс красоты. Звание Мисс Интернет завоевала девушка В_21399КS.JРG. Поздравляем победительницу!


procedure TForm1.Button1Click(Sender: TObject);
var
  bmp: TBItmap;
  jpg: TJpegImage;
  scale: Double;
begin
  if opendialog1.execute then
  begin
    jpg := TJpegImage.Create;
    try
      jpg.Loadfromfile( opendialog1.filename );
      if jpg.Height > jpg.Width then
        scale := 50 / jpg.Height
      else
        scale := 50 / jpg.Width;
      bmp:= Tbitmap.Create;
      try
        {Create thumbnail bitmap, keep pictures aspect ratio}
        bmp.Width := Round( jpg.Width * scale );
        bmp.Height:= Round( jpg.Height * scale );
        bmp.Canvas.StretchDraw( bmp.Canvas.Cliprect, jpg );
        {Draw thumbnail as control}
        Self.Canvas.Draw( 100, 10, bmp );
        {Convert back to JPEG and save to file}
        jpg.Assign( bmp );
        jpg.SaveToFile(ChangeFileext( opendialog1.filename, '_thumb.JPG' ));
      finally
        bmp.free;
      end;
    finally
      jpg.free;
    end;
  end;
end;

Приведенный код на Delphi предназначен для изменения размера изображения в формате JPEG и сохранения его как новый файл с расширением "_thumb.JPG".

Вот шаг за шагом, что делает код:

  1. Открывает компонент OpenDialog, позволяя пользователю выбрать файл JPEG.
  2. Если файл был выбран, загружает изображение с помощью TJpegImage.LoadFromFile.
  3. Вычисляет коэффициент масштабирования на основе высоты и ширины оригинального изображения, чтобы resized изображение сохраняло свой аспектный соотношение.
  4. Создает объект TBitmap, используемый для создания миниатюры оригинального изображения.
  5. Миниатюра bitmap создается путем растяжения оригинального изображения с помощью StretchDraw, при этом сохраняется его аспектное соотношение.
  6. Миниатюра затем рисуется на канвасе формы в координатах (100, 10).
  7. Наконец, миниатюра конвертируется обратно в объект TJpegImage и сохраняется как новый файл с расширением "_thumb.JPG".

Код включает в себя обработку ошибок с помощью блоков try-finally для обеспечения того, что выделенная память для bitmap и JPEG-объектов будет правильно освобождена, когда они больше не нужны.

Вот альтернативное решение, использующее класс TBitmapResizer, который предоставляет более простой способ изменения размера изображений при сохранении их аспектного соотношения:

procedure TForm1.Button1Click(Sender: TObject);
var
  jpg: TJpegImage;
  bitmap: TBitmap;
begin
  if OpenDialog1.Execute then
  begin
    jpg := TJpegImage.Create;
    try
      jpg.LoadFromFile(OpenDialog1.FileName);
      bitmap := TBitmapResizer.Create(jpg, 50);
      bitmap.SaveToFile(ChangeFileExt(OpenDialog1.FileName, '_thumb.JPG'));
    finally
      jpg.Free;
      bitmap.Free;
    end;
  end;
end;

В этом альтернативном решении класс TBitmapResizer используется для создания resized bitmap из оригинального JPEG-изображения. Resize bitmap затем сохраняется как новый файл с расширением "_thumb.JPG". Это подход более компактен и легче для чтения, чем оригинальный код.

В статье описывается процедура изменения размера JPEG-файла и сохранения его в новый файл с помощью Delphi, сохраняя при этом пропорции изображения.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: JPEG ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-07-11 12:42:45/0.0042610168457031/0