Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: JPEG Image in Stream schreiben

  Alt 2. Jul 2018, 10:20
Falls es hilft, so könnte es mit den Delphi eigenen Units realisiert werden.
Delphi-Quellcode:
uses
  ...
   jpeg, GIFImg, pngimage;

procedure TFrmPicStream.btnCreateJPEGClick(Sender: TObject);
var
  Img: TJPEGImage;
  ms: TMemoryStream;
begin
  ms := TMemoryStream.Create;
  Img := TJPEGImage.Create;
  Img.ProgressiveEncoding := True;
  Img.CompressionQuality := trckbrJPEGcomp.Position; // 0..100
  Img.Assign(imgSource.Picture.Bitmap);
  Img.Compress;
  imgDest.Picture.Bitmap.Assign(Img); // hier wird das Resultat dargestellt
  Img.SaveToStream(ms);
  lblStreamsize.Caption := IntToStr(ms.Size)+ ' (JPG) byte';
// mach was mit Stream
  ms.Free;
  Img.Free;
end;

procedure TFrmPicStream.btnCreatePNGClick(Sender: TObject);
var
  Img: TPngImage;
  ms: TMemoryStream;
begin
  ms := TMemoryStream.Create;
  Img := TPngImage.Create;
  Img.CompressionLevel := trckbrPNGComp.Position; // 0..9, bei 9 dauert es eine Ewigkeit mit den CodeGear Units
  Img.Assign(imgSource.Picture.Bitmap);
  imgDest.Picture.Bitmap.Assign(Img); // hier wird das Resultat dargestellt
  Img.SaveToStream(ms);
  lblStreamsize.Caption := IntToStr(ms.Size)+ ' (PNG) byte';
// mach was mit Stream
  ms.Free;
  Img.Free;
end;

procedure TFrmPicStream.btnCreateGIFClick(Sender: TObject);
var
  Img: TGIFImage;
  ms: TMemoryStream;
begin
  ms := TMemoryStream.Create;
  Img := TGIFImage.Create;
  Img.Assign(imgSource.Picture.Bitmap);
  Img.Pack;
  imgDest.Picture.Bitmap.Assign(Img); // hier wird das Resultat dargestellt
  Img.SaveToStream(ms);
  lblStreamsize.Caption := IntToStr(ms.Size)+ ' (GIF) byte';
// mach was mit Stream
  ms.Free;
  Img.Free;
end;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat