Delphi GDI+(code:4)

在这里插入图片描述

Delphi开发的windows应用,使用DevExpress控件库在保存图片时,报了这个错误,定位到这句话:

image.Picture.SaveToFile(filePath);

一直以为是保存函数出现问题,最后发现是TImage控件在加载img图片时需要通过bitmap来进行存储会更稳定,如果使用Picture将会造成此类报错。

稳定控件装载图片写法:
Bitmap.Assign把原本图片类型转为bitmap

img: TJPEGImage;
img := TJPEGImage.Create;
img.LoadFromFile(facePhotoUrl);
imgGuestPhoto.Picture.Bitmap.Assign(img);

如此生成的图片较大,可以进行重新绘制调整尺寸,降低分辨率来压缩。

bitmap.Width := 270;
bitmap.Height := 480;
bitmap.Canvas.StretchDraw(rect(0, 0, bitmap.Width, bitmap.Height), img );

不稳定的写法:

self.imgGuestPhoto.Picture.LoadFromFile(facePhotoUrl);

使用Bitmap在存储上会更加快速。

最近发现了一种更完美的写法,就是用TWCImage
(属于VCL.Graphics)
替代Bitmap,可以不需要裁剪并且图片占用内存与使用TJPEGImage一样。接下来直接上代码:

WicImg: TWICImage;//定义
WicImg := TWICImage.Create;//初始化
WicImg.LoadFromFile(facePhotoUrl);//直接加载jpg图片的地址
Self.imgGuestPhoto.Picture.Assign(WicImg);//保存图片
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值