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;