iOS正確裁剪圖片的方法

最近項(xiàng)目中涉及到一個(gè)裁剪圖片的功能出了問題颁井,而且是僅僅針對那特定的一張圖片有問題翅敌。我們的需求是:如果圖片不是正方形益涧,則以較短邊為邊長裁剪成正方形圖片颈畸。方法是之前寫好的僻弹,一直用著沒有問題忧吟,不知為什么現(xiàn)在這張圖片就是裁剪有問題浑塞,只裁剪了部分圖片眉抬。
這就奇怪了遭顶,跟了一下代碼發(fā)現(xiàn)代碼邏輯本身沒有問題啊喇聊,網(wǎng)上搜索了一下別人的寫法也是一樣芜飘,換成其他人的方法進(jìn)行裁剪务豺,發(fā)現(xiàn)問題是一樣的。那就證明不是方法本身有問題嗦明,應(yīng)該是這張圖片有問題笼沥。那到底是什么問題呢?跟了好幾次代碼發(fā)現(xiàn)設(shè)置的圖片大小也沒有問題啊娶牌,那為什么只裁剪了部分圖片奔浅?
嘗試:既然只裁剪了部分,那我試著把圖片大小等比例放大看看裁剪后的圖片是什么樣子诗良?結(jié)果發(fā)現(xiàn)圖片裁剪部分跟著擴(kuò)大了汹桦,雖然還是部分,但是這部分大了很多鉴裹。一下子就明白了原因所在舞骆,應(yīng)該是這張圖片被等比例縮放了钥弯。再次查看UIImage的scale是3,那問題就明了了督禽,這張?zhí)厥獾膱D片是一張3倍圖脆霎,平常我們裁剪的圖片是一倍圖,所以一倍圖的時(shí)候獲取圖片的size大小沒有問題赂蠢,是真實(shí)的圖片大小绪穆。當(dāng)裁剪的圖片是一張3倍圖或者2倍圖的時(shí)候,再獲取圖片的size就不是圖片本身的真實(shí)大小了虱岂。所以就出現(xiàn)了我遇到的這個(gè)問題玖院。

結(jié)論:獲取一張圖片的大小不是size(雖然大多數(shù)情況下是正確的),圖片的真實(shí)大小是image.size*image.scale第岖。

下面是正確的圖片裁剪方法难菌,供大家參考。
// 以圖片中心為中心蔑滓,以最小邊為邊長郊酒,裁剪正方形圖片

+(UIImage *)cropSquareImage:(UIImage *)image{

CGImageRef sourceImageRef = [image CGImage];//將UIImage轉(zhuǎn)換成CGImageRef
CGFloat _imageWidth = image.size.width * image.scale;
CGFloat _imageHeight = image.size.height * image.scale;
CGFloat _width = _imageWidth > _imageHeight ? _imageHeight : _imageWidth;
CGFloat _offsetX = (_imageWidth - _width) / 2;
CGFloat _offsetY = (_imageHeight - _width) / 2;
CGRect rect = CGRectMake(_offsetX, _offsetY, _width, _width);
CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, rect);//按照給定的矩形區(qū)域進(jìn)行剪裁
UIImage *newImage = [UIImage imageWithCGImage:newImageRef];

return newImage;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市键袱,隨后出現(xiàn)的幾起案子燎窘,更是在濱河造成了極大的恐慌,老刑警劉巖蹄咖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褐健,死亡現(xiàn)場離奇詭異,居然都是意外死亡澜汤,警方通過查閱死者的電腦和手機(jī)蚜迅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俊抵,“玉大人谁不,你說我怎么就攤上這事』栈澹” “怎么了刹帕?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長谎替。 經(jīng)常有香客問我轩拨,道長,這世上最難降的妖魔是什么院喜? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮晕翠,結(jié)果婚禮上喷舀,老公的妹妹穿的比我還像新娘砍濒。我一直安慰自己,他們只是感情好硫麻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布爸邢。 她就那樣靜靜地躺著,像睡著了一般拿愧。 火紅的嫁衣襯著肌膚如雪杠河。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天浇辜,我揣著相機(jī)與錄音券敌,去河邊找鬼。 笑死柳洋,一個(gè)胖子當(dāng)著我的面吹牛待诅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播熊镣,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼卑雁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绪囱?” 一聲冷哼從身側(cè)響起测蹲,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鬼吵,沒想到半個(gè)月后扣甲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡而柑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年文捶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片媒咳。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡粹排,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出涩澡,到底是詐尸還是另有隱情顽耳,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布妙同,位于F島的核電站射富,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏粥帚。R本人自食惡果不足惜胰耗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望芒涡。 院中可真熱鬧柴灯,春花似錦卖漫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至查描,卻和暖如春突委,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冬三。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工匀油, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人长豁。 一個(gè)月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓钧唐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親匠襟。 傳聞我的和親對象是個(gè)殘疾皇子钝侠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354