第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

iOS對(duì)圖像損壞錯(cuò)誤:<Error>:ImageIO的處理方法

iOS對(duì)圖像損壞錯(cuò)誤:<Error>:ImageIO的處理方法

暮色呼如 2019-04-16 20:26:09
在網(wǎng)絡(luò)不好時(shí),可能請(qǐng)求的圖片數(shù)據(jù)不完整,這時(shí)候在imageView展示圖片時(shí),因?yàn)榘l(fā)現(xiàn)PNG圖片不完全正確,所以早console里報(bào)錯(cuò),如下::ImageIO:PNGIDAT:invalidstoredblocklengths但這個(gè)不是運(yùn)行時(shí)異常,不知道該怎么捕獲,從而進(jìn)行例如重新請(qǐng)求等操作。求解該怎么做?
查看完整描述

2 回答

?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊

真是功夫不負(fù)有心人,在各種stackoverflow和google無(wú)解之后,我自己讀了UIImage、UIImageView以及ImageIO的源碼和官方說(shuō)明,找到了個(gè)取巧的辦法,你需要寫(xiě)下面兩步代碼:
1.讀取圖片數(shù)據(jù),然后調(diào)用2中的方法進(jìn)行校驗(yàn)
NSData*data=[NSDatadataWithContentsOfFile:imagePath];
2.判斷是否為有效的PNG圖片,JPG的請(qǐng)使用UIImageJPEGRepresentation方法
/**
*校驗(yàn)圖片是否為有效的PNG圖片
*
*@paramimageData圖片文件直接得到的NSData對(duì)象
*
*@return是否為有效的PNG圖片
*/
-(BOOL)isValidPNGByImageData:(NSData*)imageData
{
UIImage*image=[UIImageimageWithData:imageData];
//第一種情況:通過(guò)[UIImageimageWithData:data];直接生成圖片時(shí),如果image為nil,那么imageData一定是無(wú)效的
if(image==nil&&imageData!=nil){
returnNO;
}
//第二種情況:圖片有部分是OK的,但是有部分壞掉了,它將通過(guò)第一步校驗(yàn),那么就要用下面這個(gè)方法了。將圖片轉(zhuǎn)換成PNG的數(shù)據(jù),如果PNG數(shù)據(jù)能正確生成,那么這個(gè)圖片就是完整OK的,如果不能,那么說(shuō)明圖片有損壞
NSData*tempData=UIImagePNGRepresentation(image);
if(tempData==nil){
returnNO;
}else{
returnYES;
}
}
真是眼淚都留下來(lái)了!~
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-16
  • 2 回答
  • 0 關(guān)注
  • 431 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)