Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

地址:http://www.hangge.com/blog/cache/detail_975.html


一,ImageHelper介紹

ImageHelper(原來叫AFImageHelper)是使用Swift語言編寫的處理圖片的類庫伐割,通過對 UIImage 和 UIImageView 的擴(kuò)展做鹰。使其增加了對圖片的壓縮、顏色捉腥、漸變换况、裁剪等操作方法琅摩,以及支持使用緩存從網(wǎng)站上獲取圖片此迅。

二汽畴,ImageHelper的配置

(1)從GitHub上把最新代碼下載下來,地址:https://github.com/melvitax/ImageHelper

(2)將 ImageHelper.swift耸序、ImageVIewExtension.swift 添加到項(xiàng)目中即可

原文:Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

三忍些,UIImageView擴(kuò)展相關(guān)的使用樣例

1,讓UIImageView支持直接通過URL地址獲取圖片

(1)可以設(shè)置是否需要緩存圖片(默認(rèn)是緩存)坎怪。是的話罢坝,每次網(wǎng)絡(luò)請求時(shí),會先自動判斷下是否本地有緩存圖片搅窿,如果有則直接使用緩存圖片嘁酿。對于新加載下來的圖片則會緩存起來,供下次使用戈钢。

原文:Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

1

imageView1.imageFromURL("http://www.hangge.com/blog/images/logo.png", placeholder: UIImage())

(2)支持設(shè)置占位符圖片(placeholder)痹仙,在網(wǎng)絡(luò)圖片未加載完畢的時(shí)候顯示是尔。

原文:Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

1

2

imageView1.imageFromURL("http://www.hangge.com/blog/images/logo.png",

placeholder: UIImage(named: "loading")!)

(3)還可以設(shè)置圖片加載完畢后是否需要淡入顯示(默認(rèn)是true)殉了。

1

2

3

imageView1.imageFromURL("http://www.hangge.com/blog/images/logo.png",

placeholder: UIImage(named: "loading")!,

fadeIn: true)

(4)可以在圖片加載成功的回調(diào)函數(shù)中做一些后續(xù)處理。

1

2

3

4

5

6

7

imageView1.imageFromURL("http://www.hangge.com/blog/images/logo.png",

placeholder: UIImage(named: "loading")!, fadeIn: true, shouldCacheImage: true) {

(image: UIImage?) in

if image != nil {

print("圖片加載成功!")

}

}

四拟枚,UIImage擴(kuò)展相關(guān)的使用樣例

1薪铜,通過URL地址獲取圖片

同 UIImageView 一樣,UIImage 也可以通過URL獲取網(wǎng)絡(luò)圖片恩溅。同樣支持占位符圖片隔箍,圖片緩存,加載完畢回調(diào)脚乡。

(其實(shí)UIImageView的url圖片加載內(nèi)部調(diào)用的就是 UIImage.image(fromURL: url) 方法)

1

2

3

4

5

6

7

let url = "http://www.hangge.com/blog/images/logo.png"

UIImage.image(fromURL: url, placeholder: UIImage(), shouldCacheImage: true) {

(image: UIImage?) in

if image != nil {

self.imageView1.image = image

}

}

2蜒滩,通過顏色生成UIImage

(1)使用純色

原文:Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

1

UIImage(color: UIColor.orange, size: CGSize(width: 55, height: 30))

(2)使用線性漸變色

原文:Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

1

2

let gradientColors = [UIColor.orange, UIColor.red]

UIImage(gradientColors: gradientColors, size: CGSize(width: 55, height: 30))

(3)使用放射性漸變色

原文:Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

1

2

3

UIImage(startColor: UIColor.orange, endColor: UIColor.red,

radialGradientCenter: CGPoint(x: 0.5, y: 0.5), radius: 1,

size:? CGSize(width: 55, height: 30))

3,給圖片覆蓋一層漸變色

下面給原始的UIImage添加一個半透明的黃褐色漸變奶稠,使圖片有種添加老照片濾鏡的效果俯艰。

(默認(rèn)的混合模式是 CGBlendMode.Normal,也可以設(shè)置成其他的 blendMode)

原文:Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

1

2

3

let gradientColors = [UIColor(red: 0.996, green: 0.769, blue: 0.494, alpha: 1.0),

UIColor(red: 0.969, green: 0.608, blue: 0.212, alpha: 0.2)]

imageView2.image = UIImage(named: "beach")?.apply(gradientColors: gradientColors)

4锌订,通過Text文本生成UIImage

除了設(shè)置文字內(nèi)容竹握,還可以設(shè)置文字大小,文字顏色和背景顏色辆飘。

原文:Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

1

2

3

4

5

6

7

8

9

10

//假設(shè)界面上的UIImageView尺寸是180*80

let textSize = 46 * UIScreen.main.scale

let imageWidth = 180 * UIScreen.main.scale

let imageHeight = 80 * UIScreen.main.scale

if let image = UIImage(text: "hangge", font: UIFont.systemFont(ofSize: textSize),

color: UIColor.white, backgroundColor: UIColor.orange,

size: CGSize(width: imageWidth, height: imageHeight)){

imageView1.image = image

}

5啦辐,對任意UIView對象截圖(Screenshot)

1

2

3

//將當(dāng)前頁面轉(zhuǎn)換成image

let image = UIImage(fromView: self.view)

imageView2.image = image

6谓传,透明層相關(guān)(alpha layer)

1

2

3

4

5

//判斷圖片是否有透明圖層

UIImage(named: "logo")?.hasAlpha

//給圖片添加透明涂層

UIImage(named: "logo")?.applyAlpha()

7,給圖片增加外邊距(添加透明邊框)

下面樣例上下兩個imageView的尺寸是一樣的芹关,樣式都是Aspect Fit续挟。下面一個使用的image添加了透明邊距。

原文:Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

1

2

imageView1.image = UIImage(named: "beach")

imageView2.image = UIImage(named: "beach")?.apply(padding: 50)

8侥衬,圖片裁剪

(1)自定義裁剪位置和尺寸

原文:Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

1

2

3

4

imageView1.image = UIImage(named: "beach")

let rect = CGRect(x: 0, y: 0, width: 500, height: 200)

imageView2.image = UIImage(named: "beach")?.crop(bounds: rect)

(2)自動裁剪成正方形

原文:Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

1

2

imageView1.image = UIImage(named: "beach")

imageView2.image = UIImage(named: "beach")?.cropToSquare()

9庸推,調(diào)整尺寸大小

原文:Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

1

2

imageView1.image = UIImage(named: "beach")

imageView2.image = UIImage(named: "beach")?.resize(toSize: CGSize(width: 300, height: 400))

由于不同設(shè)備的縮放比例不同,可以通過 screen scale 乘以固定的寬高的辦法動態(tài)設(shè)置尺寸浇冰,保證各種設(shè)備下顯示正常贬媒,不會模糊。(對于padding肘习、borders的設(shè)置也可以用此方法)

1

2

3

let width = 300 * UIScreen.main.scale

let height = 400 * UIScreen.main.scale

let image = UIImage(named: "myImage")?.resize(toSize: CGSize(width: width, height: height))

10际乘,生成圓角或圓形圖片

(1)圓角圖片

原文:Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

1

imageView2.image = UIImage(named: "beach")?.roundCorners(cornerRadius: 70)

(2)帶邊框的圓角圖片

原文:Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

1

2

imageView1.image = UIImage(named: "beach")?.roundCorners(cornerRadius: 70, border: 200,

color: UIColor.orange)

(3)圓形圖片

原文:Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

1

imageView2.image = UIImage(named: "beach")?.roundCornersToCircle()

(4)帶邊框的圓形圖片

原文:Swift - 圖片處理庫ImageHelper詳解(擴(kuò)展UIImage,UIImageView)

1

2

imageView2.image = UIImage(named: "beach")?.roundCornersToCircle(withBorder: 40,

color: UIColor.orange)

原文出自:www.hangge.com? 轉(zhuǎn)載請保留原文鏈接:http://www.hangge.com/blog/cache/detail_975.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市漂佩,隨后出現(xiàn)的幾起案子脖含,更是在濱河造成了極大的恐慌,老刑警劉巖投蝉,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件养葵,死亡現(xiàn)場離奇詭異,居然都是意外死亡瘩缆,警方通過查閱死者的電腦和手機(jī)关拒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庸娱,“玉大人着绊,你說我怎么就攤上這事∈煳荆” “怎么了归露?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長斤儿。 經(jīng)常有香客問我剧包,道長,這世上最難降的妖魔是什么往果? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任疆液,我火速辦了婚禮,結(jié)果婚禮上棚放,老公的妹妹穿的比我還像新娘枚粘。我一直安慰自己,他們只是感情好飘蚯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布馍迄。 她就那樣靜靜地躺著福也,像睡著了一般。 火紅的嫁衣襯著肌膚如雪攀圈。 梳的紋絲不亂的頭發(fā)上暴凑,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機(jī)與錄音赘来,去河邊找鬼现喳。 笑死,一個胖子當(dāng)著我的面吹牛犬辰,可吹牛的內(nèi)容都是我干的嗦篱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼幌缝,長吁一口氣:“原來是場噩夢啊……” “哼灸促!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起涵卵,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤浴栽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后轿偎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體典鸡,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年坏晦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了萝玷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡英遭,死狀恐怖间护,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挖诸,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布法精,位于F島的核電站多律,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏搂蜓。R本人自食惡果不足惜狼荞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望帮碰。 院中可真熱鬧相味,春花似錦、人聲如沸殉挽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至一死,卻和暖如春肛度,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背投慈。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工承耿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人伪煤。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓加袋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親抱既。 傳聞我的和親對象是個殘疾皇子锁荔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

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