diff --git a/modules/imgfmt/HGImgFmt.cpp b/modules/imgfmt/HGImgFmt.cpp index 68f2de18..89eab3ac 100644 --- a/modules/imgfmt/HGImgFmt.cpp +++ b/modules/imgfmt/HGImgFmt.cpp @@ -159,14 +159,12 @@ static HGResult CheckFIFile(const HGChar* fileName, FREE_IMAGE_FORMAT fif, HGBoo return HGBASE_ERR_INVALIDARG; } - FIBITMAP *dib = FreeImage_Load(fif, fileName); - if (NULL == dib) + if (!FreeImage_Validate(fif, fileName)) { return HGBASE_ERR_FAIL; } *isTrue = HGTRUE; - FreeImage_Unload(dib); return HGBASE_ERR_OK; } @@ -245,6 +243,11 @@ static HGResult SaveFIImage(HGImage image, const HGImgFmtSaveInfo* info, const H return HGBASE_ERR_INVALIDARG; } + if (!FreeImage_FIFSupportsWriting(fif)) + { + return HGBASE_ERR_FAIL; + } + if (NULL != info) { // 检查合法性