ImageEn, unit imageenio

TImageEnIO.SaveToStreamHeif

TImageEnIO.SaveToStreamHeif

Declaration

procedure SaveToStreamHeif(Stream: TStream; HEVCCompression: Boolean = True);

Description

Saves the current image to a stream in Heif format.
The method used to save Heif files is specified by ActiveHeifEngine.
HEVCCompression should be true for HEIF/HEIC format, and false for AVIF format (this is only supported when ActiveHeifEngine is ieenDLL).

To save the image losslessly, set Lossless to true. Otherwise, specify the level of compression using ImageQuality.
For HEIF, a quality setting equivalent to 60-75% usually matches the visual fidelity of a 90% quality JPEG.
For AVIF, a value between 20 and 30 is usually the "sweet spot" for high-quality web images.

Note:
For ImageMagick Plug-In, use a Dictionary to specify quality options
To abort while saving set Aborting to true

Examples

// Save an image as a lossless HEIF file
ImageEnView1.IO.Params.Lossless := True;
ImageEnView1.IO.SaveToStreamHeif( fs );

// Save an image as a high quality lossy AVIF file
ImageEnView1.IO.Params.Lossless := True;
ImageEnView1.IO.Params.ImageQuality := 30;
ImageEnView1.IO.SaveToStreamHeif( fs, False );

Heif Size Comparisons

ImageEnView1.IO.LoadFromFile( 'D:\Alpha.png' );   // Original PNG - 335KB


ImageEnView1.IO.Params.ImageQuality := 1.0;
ImageEnView1.IO.SaveToFileWIC( 'D:\image100.Heif' );  // 85KB


ImageEnView1.IO.Params.ImageQuality := 0.9;
ImageEnView1.IO.Params.Lossless     := False;
ImageEnView1.IO.SaveToFileWIC( 'D:\image90.Heif' );   // 68KB


ImageEnView1.IO.Params.ImageQuality := 0.7;
ImageEnView1.IO.SaveToFileWIC( 'D:\image70.Heif' );   // 40KB


ImageEnView1.IO.Params.ImageQuality := 0.5;
ImageEnView1.IO.SaveToFileWIC( 'D:\image50.Heif' );   // 21KB


ImageEnView1.IO.Params.ImageQuality := 0.2;
ImageEnView1.IO.SaveToFileWIC( 'D:\image20.Heif' );   // 7KB


ImageEnView1.IO.Params.ImageQuality := 0.01;
ImageEnView1.IO.SaveToFileWIC( 'D:\image01.Heif' );   // 3KB

See Also

SaveToFileHeif
LoadFromStreamHeif