如果CImage :: Load方法失败怎么办?

uv

如果CImage尝试加载另一个图像,并且加载方法失败,是否会更改其像素?

我检查

没有记录例外保证,因此您无法承担任何责任。

查看CImage::Loadatlimage.h的源代码可以发现,无法加载图像可能会破坏先前存储的图像。这两个Load重载最终都调用CImage::CreateFromGdiplusBitmap该类成员执行两个操作:1.)调用Create以创建图像的新存储。此操作具有破坏性。2.)将源图像数据复制到目标位置。此操作可能会失败。

由于您执行的操作可能会在销毁任何先前数据的操作之后失败,因此不能假定加载失败的图像将保留先前的图像数据。

以下代码通过首先将图像加载到临时图像中,然后仅在成功时才将其分配给目标,来实现无损图像加载:

HRESULT NonDestructiveLoad( CImage& img, const CString& fileName ) {
    CImage tempImage;
    HRESULT hr = tempImage.Load( fileName );
    if ( SUCCEEDED( hr ) ) {
        // The following operations cannot fail
        img.Destroy();
        img.Attach( tempImage.Detach() );
    }
    return hr;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果静态类Load失败怎么办

来自分类Dev

如果completableFuture失败怎么办?

来自分类Dev

如果<iostream>函数失败怎么办?

来自分类Dev

如果域事件失败了怎么办?

来自分类Dev

如果Titanful Resting API调用失败怎么办?

来自分类Dev

如果建立连接失败,该怎么办?

来自分类Dev

“如果!”怎么办?意思是?

来自分类Dev

如果isAvailableForServiceType方法返回NO,该怎么办

来自分类Dev

如果AsyncTask被取消,该怎么办?

来自分类Dev

如果我跑得太久怎么办?

来自分类Dev

如果lua被信号打断怎么办?

来自分类Dev

如果trustStore证书过期怎么办?

来自分类Dev

如果堆栈内存已满怎么办

来自分类Dev

如果不包括GetRNGstate()怎么办?

来自分类Dev

如果工作完成了怎么办

来自分类Dev

如果AsyncTask被取消,该怎么办?

来自分类Dev

如果trustStore证书过期怎么办?

来自分类Dev

Maven:如果缺少Javadoc怎么办?

来自分类Dev

Python:如果数字太长怎么办?

来自分类Dev

短路:如果出现短路怎么办?

来自分类Dev

如果令牌过期怎么办

来自分类Dev

如果Cassandra报告失败但做了部分写入,该怎么办?

来自分类Dev

如果git-am失败并显示“索引中不存在”怎么办?

来自分类Dev

唤醒失败:如果生产者首先获得互斥锁,该怎么办?

来自分类Dev

如果Pester断言失败,该如何指定该怎么办?

来自分类Dev

唤醒失败:如果生产者首先获得互斥锁,该怎么办?

来自分类Dev

如果git-am失败并显示“索引中不存在”怎么办?

来自分类Dev

如果在进行交换时我的RAID失败怎么办?

来自分类Dev

jQuery.when:如果一个函数失败怎么办?

Related 相关文章

热门标签

归档