unit ImageIMPL;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
  ComObj, ActiveX, AspTlb, StrongImage_TLB, StdVcl, Graphics, Jpeg,
  GifImage, SysUtils;type
  TImage = class(TASPObject, IImage)
  private
    FFileName: string;
    FPicture: TPicture;
  protected
    procedure OnEndPage; safecall;
    procedure OnStartPage(const AScriptingContext: IUnknown); safecall;
    function Get_Height: OleVariant; safecall;
    function Get_Width: OleVariant; safecall;
    procedure Set_FileName(Value: OleVariant); safecall;
  public
    procedure Initialize; override;
    destructor Destroy; override;
  end;implementationuses ComServ;procedure TImage.OnEndPage;
begin
  inherited OnEndPage;
end;procedure TImage.OnStartPage(const AScriptingContext: IUnknown);
begin
  inherited OnStartPage(AScriptingContext);
end;function TImage.Get_Height: OleVariant;
begin
  result := FPicture.Height;
end;function TImage.Get_Width: OleVariant;
begin
  result := FPicture.Width;
end;procedure TImage.Set_FileName(Value: OleVariant);
var
  sExt: string;
  JpegImage: TJpegImage;
begin
  FFileName := Value;
  sExt := LowerCase(ExtractFileExt(FFileName));  if (sExt = '.bmp') or (sExt = '.ico') or (sExt = '.wmf') or (sExt = '.emf')
    or (sExt = '.gif') then
    FPicture.LoadFromFile(FFileName)
  else begin
    JpegImage := TJpegImage.Create;
    JpegImage.LoadFromFile(FFileName);
    FPicture.Graphic := JpegImage;
    JpegImage.Free;
  end;
end;destructor TImage.Destroy;
begin
  FPicture.Free;
  inherited;
end;procedure TImage.Initialize;
begin
  inherited;
  FPicture := TPicture.Create;
end;initialization
  TAutoObjectFactory.Create(ComServer, TImage, Class_Image,
    ciMultiInstance, tmApartment);
end.