Codeunit 5080 Image Handler Management, source in 29
Source29
src/Layers/W1/BaseApp/Modules/System/Media/ImageHandlerManagement.Codeunit.al79 lines, Copyright (c) Microsoft Corporation. MIT
namespace System.Media;
using System;
using System.Utilities;
codeunit 5080 "Image Handler Management"
{
var
ImageQuality: Integer;
[TryFunction]
procedure ScaleDown(var SourceImageInStream: InStream; var ResizedImageOutStream: OutStream; NewWidth: Integer; NewHeight: Integer)
var
ImageHandler: DotNet ImageHandler;
begin
ImageHandler := ImageHandler.ImageHandler(SourceImageInStream);
if ImageQuality = 0 then
ImageQuality := GetDefaultImageQuality();
if (ImageHandler.Height <= NewHeight) and (ImageHandler.Width <= NewWidth) then begin
CopyStream(ResizedImageOutStream, SourceImageInStream);
exit;
end;
CopyStream(ResizedImageOutStream, ImageHandler.ResizeImage(NewWidth, NewHeight, ImageQuality));
end;
procedure ScaleDownFromBlob(var TempBlob: Codeunit "Temp Blob"; NewWidth: Integer; NewHeight: Integer): Boolean
var
ImageInStream: InStream;
ImageOutStream: OutStream;
begin
if not TempBlob.HasValue() then
exit;
TempBlob.CreateInStream(ImageInStream);
TempBlob.CreateOutStream(ImageOutStream);
exit(ScaleDown(ImageInStream, ImageOutStream, NewWidth, NewHeight));
end;
procedure SetQuality(NewImageQuality: Integer)
begin
ImageQuality := NewImageQuality;
end;
local procedure GetDefaultImageQuality(): Integer
begin
// Default quality that produces the best quality/compression ratio
exit(90);
end;
[TryFunction]
procedure GetImageSize(ImageInStream: InStream; var Width: Integer; var Height: Integer)
var
ImageHandler: DotNet ImageHandler;
begin
ImageHandler := ImageHandler.ImageHandler(ImageInStream);
Width := ImageHandler.Width;
Height := ImageHandler.Height;
end;
[TryFunction]
procedure GetImageSizeBlob(var TempBlob: Codeunit "Temp Blob"; var Width: Integer; var Height: Integer)
var
ImageInStream: InStream;
begin
if not TempBlob.HasValue() then
exit;
TempBlob.CreateInStream(ImageInStream);
GetImageSize(ImageInStream, Width, Height);
end;
}