www.demi-s.narod.ru

Delphi
Статьи:

· Интерфейс

· WinAPI

· Компоненты

· Базы данных

· ShellAPI



WinAPI


Конвертирование Bitmap в JPEG

Используется поток данных, чтобы загрузить растровое изображение и преобразовать его в изображение Jpeg.
Конвертированное изображение отображается и сохраняется в файл .jpeg

Загружаем .bmp изображение, преобразовываем его в изображение .jpg и сохраняем как .jpg.

Необходимо использовать поток, чтобы сохранить файл как .jpg. Использование обычного Image.Picture.SaveToFile(FileName) сохранит изображение как растровый файл.

unit BMP2JPGz;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Jpeg;
 
type
  TForm1 = class(TForm)
    Image1: TImage;
    LoadPictureButton: TButton;
    Image2: TImage;
    Label1: TLabel;
    Label2: TLabel;
    SaveJPGButton: TButton;
    procedure LoadPictureButtonClick(Sender: TObject);
    procedure SaveJPGButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
procedure ConvertBMP2JPG(Instream: TStream);
 
implementation
 
{$R *.DFM}
 
procedure ConvertBMP2JPG(Instream: TStream);
var
  JpegImage: TJpegImage;
  Bitmap: TBitmap;
begin
  JpegImage := TJpegImage.Create;
  Bitmap := TBitmap.Create;
  try
    // Загружаем и отображаем растровое изображение
    Bitmap.LoadFromStream(InStream);
    Form1.Image1.Canvas.Draw(0, 0, Bitmap);
    Form1.Label1.Caption := 'Bitmap picture';
    // преобразовываем в jpeg и отображаем
    JpegImage.Assign(Bitmap);
    Form1.Image2.Canvas.Draw(0, 0, JpegImage);
    Form1.Label2.Caption := 'Jpeg picture';
  finally
    JpegImage.Free;
    Bitmap.Free;
  end;
end;
 
procedure TForm1.LoadPictureButtonClick(Sender: TObject);
var
  InStream: TFileStream;
begin
  try
    // изменяем любой растровый файл ...
    InStream := TFileStream.Create('Naomi.bmp', fmOpenRead);
    ConvertBMP2JPG(Instream);
  finally
    InStream.Free;
  end;
end;
 
procedure TForm1.SaveJPGButtonClick(Sender: TObject);
var
  OutStream: TFileStream;
  JpegImage: TJpegImage;
begin
  JpegImage := TJpegImage.Create;
  JpegImage.Assign(Image2.Picture.Bitmap);
  try
    OutStream := TFileStream.Create('Naomi.jpg', fmOpenWrite or fmCreate);
    JpegImage.SaveToStream(OutStream);
  finally
    OutStream.Free;
  end;
  JpegImage.Free;
end;
 
end.

Автор www.daniweb.com


Hosted by uCoz