使用SDWebImage加載圖片內(nèi)存飚升 導(dǎo)致閃退問題

使用SDWebImage加載圖片內(nèi)存飚升 導(dǎo)致閃退問題

[[SDImageCache sharedImageCache] setShouldDecompressImages:NO];
[[SDWebImageDownloader sharedDownloader] setShouldDecompressImages:NO];

他說的意思大概是減壓縮圖片,并將圖片存到cache使得之后的加載更加快叹括,效果更加好枯芬。但是問題就在于去壓縮這個操作,如果傳進的圖片分辨率特別的高碰辅,它的減壓縮會消耗大量的內(nèi)存懂昂,按照帖子其他回復(fù)的綜合可以大概得出結(jié)論就是他會將圖片的每一個像素點都有一個空間存下它的各個通道值,雖然這個內(nèi)存空間是由于CG重繪的時候alloc出來的没宾,所以是存在于VM里的空間凌彬。因此這樣的處理會導(dǎo)致一個拇指大小的圖片都可能消耗上GB得內(nèi)存。




幾百K的圖片循衰,分辨率達到3000+*2000+铲敛,就多消耗了40M內(nèi)存,如果是GIF圖会钝,又是幀數(shù)比較高伐蒋,分辨率比較高的,就會出現(xiàn)一個GIF圖500M甚至上GB得奇葩現(xiàn)象= =

UIImage+MultiFormat這個類里面添加如下壓縮方法迁酸,

+(UIImage *)compressImageWith:(UIImage *)image  
{  
    float imageWidth = image.size.width;  
    float imageHeight = image.size.height;  
    float width = 640;  
    float height = image.size.height/(image.size.width/width);  
      
    float widthScale = imageWidth /width;  
    float heightScale = imageHeight /height;  
      
    // 創(chuàng)建一個bitmap的context  
    // 并把它設(shè)置成為當(dāng)前正在使用的context  
    UIGraphicsBeginImageContext(CGSizeMake(width, height));  
      
    if (widthScale > heightScale) {  
        [image drawInRect:CGRectMake(0, 0, imageWidth /heightScale , height)];  
    }  
    else {  
        [image drawInRect:CGRectMake(0, 0, width , imageHeight /widthScale)];  
    }  
      
    // 從當(dāng)前context中創(chuàng)建一個改變大小后的圖片  
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();  
    // 使當(dāng)前的context出堆棧  
    UIGraphicsEndImageContext();  
      
    return newImage;  
      
} 

對圖片進行壓縮

#ifdef SD_WEBP  
    else if ([imageContentType isEqualToString:@"image/webp"])  
    {  
        image = [UIImage sd_imageWithWebPData:data];  
    }  
#endif  
    else {  
        image = [[UIImage alloc] initWithData:data];  
        if (data.length/1024 > 128) {  
            image = [self compressImageWith:image];  
        }  
        UIImageOrientation orientation = [self sd_imageOrientationFromImageData:data];  
        if (orientation != UIImageOrientationUp) {  
            image = [UIImage imageWithCGImage:image.CGImage  
                                        scale:image.scale  
                                  orientation:orientation];  
            }  
到了這里還需要進行最后一步先鱼。就是在SDWebImageDownloaderOperation的connectionDidFinishLoading方法里面的:
UIImage *image = [UIImage sd_imageWithData:self.imageData];

//將等比壓縮過的image在賦在轉(zhuǎn)成data賦給self.imageData
NSData *data = UIImageJPEGRepresentation(image, 1);
self.imageData = [NSMutableData dataWithData:data];
  // 再配合   
 [[SDImageCache sharedImageCache] setValue:nil forKey:@"memCache"];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市胁出,隨后出現(xiàn)的幾起案子型型,更是在濱河造成了極大的恐慌,老刑警劉巖全蝶,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闹蒜,死亡現(xiàn)場離奇詭異,居然都是意外死亡抑淫,警方通過查閱死者的電腦和手機绷落,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來始苇,“玉大人砌烁,你說我怎么就攤上這事〈呤剑” “怎么了函喉?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長荣月。 經(jīng)常有香客問我管呵,道長,這世上最難降的妖魔是什么哺窄? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任捐下,我火速辦了婚禮账锹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坷襟。我一直安慰自己奸柬,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布婴程。 她就那樣靜靜地躺著廓奕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪档叔。 梳的紋絲不亂的頭發(fā)上懂从,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音蹲蒲,去河邊找鬼。 笑死侵贵,一個胖子當(dāng)著我的面吹牛届搁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窍育,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼卡睦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了漱抓?” 一聲冷哼從身側(cè)響起表锻,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎乞娄,沒想到半個月后瞬逊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡仪或,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年确镊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片范删。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡蕾域,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出到旦,到底是詐尸還是另有隱情旨巷,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布添忘,位于F島的核電站采呐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏昔汉。R本人自食惡果不足惜懈万,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一拴清、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧会通,春花似錦口予、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至裳涛,卻和暖如春木张,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背端三。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工舷礼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人郊闯。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓妻献,卻偏偏與公主長得像,于是被迫代替她去往敵國和親团赁。 傳聞我的和親對象是個殘疾皇子育拨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容