IOS App圖片相關(guān)處理

一幢踏、圖片展示


展示圖片 時(shí)候 固定 了imageView的大小 圖片 也裁剪了 盡量保持比例 可是 還是失真 變形了


這張圖 ui 要求展示的UIimageView 大小是固定 的 ,傳過(guò)來(lái)的 圖片 是這樣的比例大小

這么大的圖呢 比例 完全 不對(duì)等
imageView 的contentMode 屬性 網(wǎng)上有個(gè) 很形象的例子

但是 盡量 其中UIViewContentModeScaleAspectFill會(huì)保證圖片比例不變致盟,但是是填充整個(gè)ImageView的
但是 我使用的情況 比例嚴(yán)重不符合要求 所以 變形的非常明顯
這個(gè)時(shí)候 關(guān)鍵代碼就是

imageView.clipsToBounds = YES;  

When YES, content and subviews are clipped to the bounds of the view. Default is NO.
這里的clip是修剪的意思,bounds是邊界的意思是泛源,合起來(lái)就是:如果子視圖的范圍超出了父視圖的邊界,那么超出的部分就會(huì)被裁剪掉闺骚。 那么圖片 就會(huì)按比例顯示 盡管 圖片不會(huì)顯示全 這也是合理的吧哈哈
使用了 這個(gè) clipsToBounds 屬性 貼張成果展示
完美!!!

二、圖片上傳


需求

服務(wù)器人員說(shuō)圖片最大只能為1M,圖片質(zhì)量要求盡量清晰瘸右,不得裁剪。

思路

先調(diào)整分辨率岩齿,再調(diào)整圖片質(zhì)量系數(shù)

代碼實(shí)現(xiàn)

1.調(diào)用

    //圖片壓縮
    NSData *compressData = [NSData compressImage:image toByte:compressImageByte];
    
    NSLog(@"壓縮數(shù)據(jù)大小:%.4f MB",(double)compressData.length/1024.0f/1024.0f);
    return compressData;

2.實(shí)現(xiàn)代碼

NSData+TGCompress.h

#import <Foundation/Foundation.h>

@interface NSData (TGCompress)
/**
 *  圖片壓縮
 *
 *  @param image     要被壓縮的圖片
 *  @param maxLength 目標(biāo)大小
 *
 *  @return 最終圖片data
 */
+ (NSData *)compressImage:(UIImage *)image toByte:(NSUInteger)maxLength;
@end
NSData+TGCompress.m
#import "NSData+TGCompress.h"

@implementation NSData (TGCompress)
+ (NSData *)compressImage:(UIImage *)image toByte:(NSUInteger)maxLength {
    // Compress by quality
    CGFloat compression = 1;
    NSData *data = UIImageJPEGRepresentation(image, compression);
    NSLog(@"Before compressing quality, image size = %ld KB",data.length/1024);
    if (data.length < maxLength) return data;
    
    CGFloat max = 1;
    CGFloat min = 0;
    for (int i = 0; i < 6; ++i) {
        compression = (max + min) / 2;
        data = UIImageJPEGRepresentation(image, compression);
        //        NSLog(@"Compression = %.1f", compression);
        //        NSLog(@"In compressing quality loop, image size = %ld KB", data.length / 1024);
        if (data.length < maxLength * 0.9) {
            min = compression;
        } else if (data.length > maxLength) {
            max = compression;
        } else {
            break;
        }
    }
    
    //    NSLog(@"After compressing quality, image size = %ld KB", data.length / 1024);
    
    if (data.length < maxLength) return data;
    UIImage *resultImage = [UIImage imageWithData:data];

    // Compress by size
    NSUInteger lastDataLength = 0;
    while (data.length > maxLength && data.length != lastDataLength) {
        lastDataLength = data.length;
        CGFloat ratio = (CGFloat)maxLength / data.length;
        //      NSLog(@"Ratio = %.1f", ratio);
        CGSize size = CGSizeMake((NSUInteger)(resultImage.size.width * sqrtf(ratio)),
                                 (NSUInteger)(resultImage.size.height * sqrtf(ratio))); // Use NSUInteger to prevent white blank
        UIGraphicsBeginImageContext(size);
        [resultImage drawInRect:CGRectMake(0, 0, size.width, size.height)];
        resultImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        data = UIImageJPEGRepresentation(resultImage, compression);
        //        NSLog(@"In compressing size loop, image size = %ld KB", data.length / 1024);
    }
    //    NSLog(@"After compressing size loop, image size = %ld KB", data.length / 1024);
    return data;
}

@end

具體原理見(jiàn)我的這篇文章iOS 圖片壓縮限制大小最優(yōu)解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末太颤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子盹沈,更是在濱河造成了極大的恐慌龄章,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乞封,死亡現(xiàn)場(chǎng)離奇詭異做裙,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)肃晚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門锚贱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人关串,你說(shuō)我怎么就攤上這事拧廊。” “怎么了晋修?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵吧碾,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我墓卦,道長(zhǎng)倦春,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任落剪,我火速辦了婚禮睁本,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘忠怖。我一直安慰自己添履,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布脑又。 她就那樣靜靜地躺著暮胧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪问麸。 梳的紋絲不亂的頭發(fā)上往衷,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音严卖,去河邊找鬼席舍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛哮笆,可吹牛的內(nèi)容都是我干的来颤。 我是一名探鬼主播汰扭,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼福铅!你這毒婦竟也來(lái)了萝毛?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤滑黔,失蹤者是張志新(化名)和其女友劉穎笆包,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體略荡,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡庵佣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了汛兜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巴粪。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖粥谬,靈堂內(nèi)的尸體忽然破棺而出肛根,到底是詐尸還是另有隱情,我是刑警寧澤帝嗡,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站璃氢,受9級(jí)特大地震影響哟玷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜一也,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一巢寡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧椰苟,春花似錦抑月、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至洁仗,卻和暖如春层皱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赠潦。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工叫胖, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人她奥。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓瓮增,卻偏偏與公主長(zhǎng)得像怎棱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绷跑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

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