iOS圖片 縮放、剪裁、自適應(yīng)剪裁馏颂、保存到相冊

縮放

/**
 *將圖片縮放到指定的CGSize大小
 * UIImage image 原始的圖片
 * CGSize size 要縮放到的大小
 */
+(UIImage*)image:(UIImage *)image scaleToSize:(CGSize)size{
    
    // 得到圖片上下文,指定繪制范圍
    UIGraphicsBeginImageContext(size);
    
    // 將圖片按照指定大小繪制
    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
    
    // 從當(dāng)前圖片上下文中導(dǎo)出圖片
    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    
    // 當(dāng)前圖片上下文出棧
    UIGraphicsEndImageContext();
    
    // 返回新的改變大小后的圖片
    return scaledImage;
}

通過實際效果來看棋傍,利用此方法縮放操作對圖片的畫質(zhì)是有一定影響的救拉。

剪裁

/**
 *從圖片中按指定的位置大小截取圖片的一部分
 * UIImage image 原始的圖片
 * CGRect rect 要截取的區(qū)域
 */
+(UIImage *)imageFromImage:(UIImage *)image inRect:(CGRect)rect{
    
    //將UIImage轉(zhuǎn)換成CGImageRef
    CGImageRef sourceImageRef = [image CGImage];
    
    //按照給定的矩形區(qū)域進行剪裁
    CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, rect);
    
    //將CGImageRef轉(zhuǎn)換成UIImage
    UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
    
    //返回剪裁后的圖片
    return newImage;
}

自適應(yīng)剪裁

一般當(dāng)我們得到一個大圖,但并不想把原圖畫到畫布上瘫拣,而是要按照一定比例將原圖的一部分畫到畫布上亿絮。注意這里是指通過繪制的方式顯示圖片而不是UIImageView,因為UIImageView提供了類似自適應(yīng)的方法麸拄。
這個操作其實只需要我們做一個寬高比的判斷就可以

/**
 *根據(jù)給定的size的寬高比自動縮放原圖片派昧、自動判斷截取位置,進行圖片截取
 * UIImage image 原始的圖片
 * CGSize size 截取圖片的size
 */
-(UIImage *)clipImage:(UIImage *)image toRect:(CGSize)size{

    //被切圖片寬比例比高比例小 或者相等,以圖片寬進行放大
    if (image.size.width*size.height <= image.size.height*size.width) {
        
        //以被剪裁圖片的寬度為基準(zhǔn)拢切,得到剪切范圍的大小
        CGFloat width  = image.size.width;
        CGFloat height = image.size.width * size.height / size.width;
       
        // 調(diào)用剪切方法 
        // 這里是以中心位置剪切蒂萎,也可以通過改變rect的x、y值調(diào)整剪切位置
        return [self imageFromImage:image inRect:CGRectMake(0, (image.size.height -height)/2, width, height)]; 
        
    }else{ //被切圖片寬比例比高比例大淮椰,以圖片高進行剪裁
        
        // 以被剪切圖片的高度為基準(zhǔn)五慈,得到剪切范圍的大小
        CGFloat width  = image.size.height * size.width / size.height;
        CGFloat height = image.size.height;
        
        // 調(diào)用剪切方法
        // 這里是以中心位置剪切帮毁,也可以通過改變rect的x、y值調(diào)整剪切位置
        return [self imageFromImage:image inRect:CGRectMake((image.size.width -width)/2, 0, width, height)];
    }
    return nil;
}

保存到相冊

// Adds a photo to the saved photos album.  The optional completionSelector should have the form:
//  - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo;
UIKIT_EXTERN void UIImageWriteToSavedPhotosAlbum(UIImage *image, __nullable id completionTarget, __nullable SEL completionSelector, void * __nullable contextInfo) __TVOS_PROHIBITED;
// 保存圖片
- (void)saveImageToPhotosAlbum:(UIImage*)image{
    UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
}

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
    
    if(error != NULL){
        // 保存圖片失敗

    }else{
        // 保存圖片成功

    }
}

版權(quán)聲明:出自MajorLMJ技術(shù)博客的原創(chuàng)作品 豺撑,轉(zhuǎn)載時必須注明出處及相應(yīng)鏈接烈疚!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市聪轿,隨后出現(xiàn)的幾起案子爷肝,更是在濱河造成了極大的恐慌,老刑警劉巖陆错,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灯抛,死亡現(xiàn)場離奇詭異,居然都是意外死亡音瓷,警方通過查閱死者的電腦和手機对嚼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绳慎,“玉大人纵竖,你說我怎么就攤上這事⌒臃撸” “怎么了靡砌?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長珊楼。 經(jīng)常有香客問我通殃,道長,這世上最難降的妖魔是什么厕宗? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任画舌,我火速辦了婚禮,結(jié)果婚禮上已慢,老公的妹妹穿的比我還像新娘曲聂。我一直安慰自己,他們只是感情好蛇受,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布句葵。 她就那樣靜靜地躺著,像睡著了一般兢仰。 火紅的嫁衣襯著肌膚如雪乍丈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天把将,我揣著相機與錄音轻专,去河邊找鬼。 笑死察蹲,一個胖子當(dāng)著我的面吹牛请垛,可吹牛的內(nèi)容都是我干的催训。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼宗收,長吁一口氣:“原來是場噩夢啊……” “哼漫拭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起混稽,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤采驻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后匈勋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體礼旅,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年洽洁,在試婚紗的時候發(fā)現(xiàn)自己被綠了痘系。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡饿自,死狀恐怖汰翠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情璃俗,我是刑警寧澤奴璃,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站城豁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏抄课。R本人自食惡果不足惜唱星,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望跟磨。 院中可真熱鬧间聊,春花似錦、人聲如沸抵拘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽僵蛛。三九已至尚蝌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間充尉,已是汗流浹背飘言。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留驼侠,地道東北人姿鸿。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓谆吴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親苛预。 傳聞我的和親對象是個殘疾皇子句狼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

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