解決方法:
1.讀取圖片數據,然後調用2中的方法進行校驗
NSData* data = [NSData dataWithContentsOfFile:imagePath];
2.判斷是否為有效的PNG圖片,JPG的請使用UIImageJPEGRepresentation方法
/**
* 校驗圖片是否為有效的PNG圖片
*
* @param imageData 圖片文件直接得到的NSData對象
*
* @return 是否為有效的PNG圖片
*/
- (BOOL)isValidPNGByImageData:(NSData*)imageData
{
UIImage* image = [UIImage imageWithData:imageData];
//第一種情況:通過[UIImage imageWithData:data];直接生成圖片時,如果image為nil,那麼imageData一定是無效的
if (image == nil && imageData != nil) {
return NO;
}
//第二種情況:圖片有部分是OK的,但是有部分壞掉了,它將通過第一步校驗,那麼就要用下面這個方法了。將圖片轉換成PNG的數據,如果PNG數據能正確生成,那麼這個圖片就是完整OK的,如果不能,那麼說明圖片有損壞
NSData* tempData = UIImagePNGRepresentation(image);
if (tempData == nil) {
return NO;
} else {
return YES;
}
}