【原创】delphi fmx 把 Bitmap 类 bmp格式图片转成其它图片jpg;jpeg;png;gif;tif;tiff;ico;hdp;wmp;tga;icns格式

图片格式转换是经常要用到的,这里使用Delphi自带的图片格式处理功能,可以把图片转换成任意的格式,可以非常方便使用在于 PC ,安卓拍照,和图片存储方面


// 把 bmp 转换成其它图片文件格式 如: jpg; jpeg; png; gif; tif; tiff; ico; hdp; wmp; tga; icns 等。此方法适用于移动端 
// 需要引用的单元
uses
   FMX.Surfaces, FMX.Consts;

// 使用方法
procedure TForm1.Button1Click(Sender: TObject);
var
  FBmp: TBitmap;
var
  ASave: TSaveDialog;
  AStr: String;
  AExt: String;
  ASurf: FMX.Surfaces.TBitmapSurface;
  AStm: TMemoryStream;
begin // www.delphifmx.com
  FBmp:= TBitmap.Create;
  FBmp.LoadFromFile('XXXX');
  AStr:= '';
  ASave:= TSaveDialog.Create(nil);
  ASave.Filter:= '图片格式 '// (bmp;jpg;jpeg;png;gif;tif;tiff;ico;hdp;wmp;tga;icns)'
                +'|*'+SBMPImageExtension
                +';*'+SJPGImageExtension
                +';*'+SJPEGImageExtension
                +';*'+SPNGImageExtension
                +';*'+SGIFImageExtension
                +';*'+STIFImageExtension
                +';*'+STIFFImageExtension
                +';*'+SICOImageExtension
                +';*'+SHDPImageExtension
                +';*'+SWMPImageExtension
                +';*'+STGAImageExtension
                +';*'+SICNSImageExtension;
  if ASave.Execute then begin
    AStr:= ASave.FileName;
  end;
  ASave.DisposeOf;
  ASave:= nil;
  //保存
  if AStr <> '' then begin
    AExt:= ExtractFileExt(AStr);
    if Sametext(AExt, SBMPImageExtension )
     or Sametext(AExt, SJPGImageExtension )
     or Sametext(AExt, SJPEGImageExtension)
     or Sametext(AExt, SPNGImageExtension )
     or Sametext(AExt, SGIFImageExtension )
     or Sametext(AExt, STIFImageExtension )
     or Sametext(AExt, STIFFImageExtension)
     or Sametext(AExt, SICOImageExtension )
     or Sametext(AExt, SHDPImageExtension )
     or Sametext(AExt, SWMPImageExtension )
     or Sametext(AExt, STGAImageExtension )
     or Sametext(AExt, SICNSImageExtension) then begin
      ASurf:= TBitmapSurface.Create;
      AStm:= TmemoryStream.Create;
      try
        ASurf.Assign(FBmp);
        FMX.Graphics.TBitmapCodecManager.SaveToStream(AStm, ASurf, AExt);
        AStm.SaveToFile(AStr);
      except
      end;
      ASurf.DisposeOf;
      AStm.DisposeOf;
    end else begin
      FBmp.SaveToFile(AStr + SBMPImageExtension);
    end;
  end;
end;

添加新评论

纯文本

  • 不允许使用HTML标签。
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。
请输入图片中的字符,不区分大小写