2014 165438+10月26日補充:
我發現在引入ImageIO之後,圖片還是會有損壞的時候。在我快要放棄的時候,真的有了回報。在各種stackoverflow和google無解之後,我自己看了UIImage、UIImageView和ImageIO的源代碼和官方說明,發現了壹個棘手的辦法。您需要編寫以下兩個步驟:
1.讀取圖片數據,然後調用2中的方法進行驗證。
ns data * data =[ns data datawithcontentsofile:image path];
2.要確定它是否是有效的PNG圖片,請使用JPG的UIImageJPEGRepresentation方法。
/**
*檢查圖片是否是有效的PNG圖片。
*
* @param imageData直接從圖像文件中獲取的NSData對象。
*
* @return是有效的PNG圖片嗎?
*/
-(BOOL)isValidPNGByImageData:(ns data *)imageData
{
ui image * image =[ui image imageWithData:image data];
//第壹種情況:via[ui image imageWithData:data];直接生成圖片時,如果image是nil,那麽imageData壹定是無效的。
if(image = = nil & amp;& ampimageData!=零){
返回否;
}
//第二種情況,圖片壹部分沒問題,但是壹部分壞了,會通過第壹步,所以會用下面的方法。將圖片轉換成PNG數據。如果PNG數據能夠正確生成,那麽圖片就是完整的,OK。如果不是,那麽畫面就損壞了。
ns data * tempData = UIImagePNGRepresentation(image);
if (tempData == nil) {
返回否;
}否則{
返回YES
}
}