位圖上下文

位圖上下文

  • 怎么讓方形圖片變成圓形圖片毙驯?
  • 位圖上下文
    • 生成了一張新的圖片
    • 應(yīng)用:水印倒堕、圓形圖片裁剪
    • 手動(dòng)開啟上下文,指定上下文的大小
    • 創(chuàng)建時(shí)上下文的大小爆价,決定著生成圖片的大小

水印

  • 位圖上下文的大小 = 圖片的大小

  • 加水涌寻汀:生成一張新的圖片

  • 注意:生成圖片不是在view上畫東西了媳搪,不用自定義view,不用寫drawRect方法;生成圖片可以在任何地方生成骤宣。

  • 生成一張新的圖片

  • 加載圖片

  • 要繪制的文字

  • 開啟位圖上下文

    • 開啟上下文UIGraphicsBeginImageContext
    • 創(chuàng)建時(shí)上下文的大小決定著生成圖片的大小
  • 把圖片會(huì)知道上下文當(dāng)中

    • drawAtPoint/drawInRect
  • 畫文字

    • drawAtPoint:withAttribute:
  • 從上下文當(dāng)中生成一張新的圖片

    • UIGraphicsGetImageFromCurrentImageContext()
    • 把上下文當(dāng)中所有繪制的內(nèi)容合成到一起蛾号,生成一張新的圖片
  • 手動(dòng)關(guān)閉上下文

    • UIGraphicsEndImageContext()
  • 拖線,賦值

    • self.imageV.image = newImage;

頭像(生成圓形圖片)

  • 加載圖片
  • 開啟位圖上下文
    • UIGraphicsBeginImageContext
    • 位圖上下文大小 = 圖片大小
  • 裁剪(繪制之前做裁剪)
    • UIBezierPath OvalInRect
    • UIRectClip
  • 把路徑設(shè)置為裁剪區(qū)域(超出裁剪區(qū)域以外的內(nèi)容會(huì)自動(dòng)裁剪掉)
    • [path addClip]
    • 對(duì)之前已經(jīng)畫上去的東西涯雅,沒有作用
  • 把圖片繪制到上下文當(dāng)中
    • drawAtPoint
  • 從位圖上下文當(dāng)中生成一張圖片
    • UIGraphicsGetImageFromCurrentImageContext()
  • 關(guān)閉位圖上下文
    • UIGraphicsEndImageContext()
  • 拖線鲜结,展示
    • self.imageV.image = newImage;

帶有邊框的圓形圖片裁剪(抽一個(gè)分類方便復(fù)用)

  • 加載圖片

  • 設(shè)置邊框?qū)挾?/p>

  • 開啟位圖上下文

    • 大小 = 圖片的寬高 + 2倍圖片邊框的寬高
    • UIGraphicsBeginImageContext()
  • 繪制一個(gè)大圓

    • UIBezierPath OvalInRect
  • 把大圓畫上去 path fill

  • 設(shè)置裁剪區(qū)域

    • UIBezierPath
      • x,y:邊框?qū)挾?/li>
      • 寬度高度 = 圖片的寬高
  • 把路徑設(shè)置為裁剪區(qū)域

    • addClip
  • 把圖片繪制到上下文

  • 從位圖上下文當(dāng)中生成一張圖片

    • UIGraphicsGetImageFromCurrentImageContext()
  • 關(guān)閉上下文

    • UIGraphicsEndImageContext()
  • 拖線,展示

    • self.imageV.image = newImage;
  • 抽一個(gè)分類活逆,方便復(fù)用

    • 圖片精刷,邊框大小,大圓的顏色是變化的
    • ObjectC-file
    • UIImage()
    • 把出現(xiàn)中文的蔗候,放到后面

截屏(新的知識(shí)點(diǎn):二進(jìn)制流)

  • 生成一張新的圖片
  • 創(chuàng)建一個(gè)位圖上下文
    • 大小等于屏幕大小
  • 獲取當(dāng)前上下文
    • CGContextRef UIGraphicsGetCurrentContext
  • 把控制器的view內(nèi)容畫到上下文當(dāng)中
    • view之所以能顯示是因?yàn)閮?nèi)部有l(wèi)ayer
    • self.view.layer renderInContext:
  • 從上下文當(dāng)中生成一張新的圖片
    • Get
  • 關(guān)閉上下文
    • End
  • 把手機(jī)生成的圖片怒允,生成到電腦的桌面上
    • 怎么把圖片上傳到服務(wù)器的?
    • 把圖片轉(zhuǎn)成二進(jìn)制流
    • 如何把圖片轉(zhuǎn)成二進(jìn)制流?
      • UIImage
      • 轉(zhuǎn)成jpe還是png
      • UIImageJPERepresentation(newImage,壓縮質(zhì)量:范圍0~1)
      • 返回值NSData
      • data writeToFile:atomically:
      • UIImagePNGRepresentation(本身就是最高質(zhì)量的圖片)

截屏擴(kuò)展

  • [UIScreen mainScreen].scale 不是固定的值锈遥,根據(jù)手機(jī)型號(hào)的不同值不同
    • 點(diǎn)坐標(biāo)*比例 ——> 轉(zhuǎn)成像素坐標(biāo)
    • 在OC當(dāng)中會(huì)自動(dòng)把點(diǎn)坐標(biāo)轉(zhuǎn)成像素
    • 在C語(yǔ)言當(dāng)中纫事,它不會(huì)自動(dòng)轉(zhuǎn)成像素
  • 開啟上下文
    • UIGraphicsBeginImageContextWithOptions(上下文大小,是否為不透明度opaque NO,scale縮放比例點(diǎn)坐標(biāo)與像素的比例)
    • scale 1.0
    • scale 2.0 打印的size 和生成圖片的size尺寸不一樣
    • scale 0.0 設(shè)備的[UIScreen mainScreen].scale
    • scale 縮放因子 bitmap

截圖

  • 遮蓋
  • 截圖
  • 蒙版遮蓋
    • 開始拖動(dòng)的點(diǎn)
    • 當(dāng)前手指的點(diǎn)
    • 寬高--x,y的偏移量
  • 添加手勢(shì)Pan Gesture Recognizer
  • 監(jiān)聽拖動(dòng)時(shí)會(huì)調(diào)用哪個(gè)方法,拖線所灸,判斷手勢(shì)狀態(tài)
    • state:Begin
      • 獲取手指當(dāng)前點(diǎn):locationInView
      • 定義一個(gè)成員屬性丽惶,方便下面拿到當(dāng)前點(diǎn)
    • state:Change
      • locationInView
      • 寬度:x方向偏移量
      • 高度:y方向的偏移量
      • frame
        • startP.X
        • startP.y
        • w
        • h
    • 創(chuàng)建遮蓋的view
      • 懶加載
      • 懶加載的好處:
        • 1.什么時(shí)候使用什么時(shí)候才去創(chuàng)建,節(jié)省內(nèi)存
        • 2.保證對(duì)象只有一個(gè)
        • 3.保證該對(duì)象在使用時(shí)一直存在
    • state:End手指松開
      • 移除遮蓋
  • 把超過遮蓋以外的內(nèi)容裁減掉
    • 生成一張和imageView一樣大的圖片
    • 開啟上下文UIGraphicsBeginImageContext:默認(rèn)是透明的
    • 裁剪:UIRectClip(遮蓋的frame)
    • CGContextRef
    • renderInContext
    • 生成圖片
    • 關(guān)閉上下文
    • self.imageV.image = newImage

擴(kuò)展

  • 手指松開爬立,生成圖片不是imageView大小
  • 把生成遮蓋大小的圖片钾唬,顯示到桌面上面
  • 畫圖片,開啟上下文侠驯,遮蓋大小
  • 拿到圖片抡秆,往上面畫

圖片擦除(橡皮擦功能)

  • uerInteraction
  • 添加手勢(shì)
    • Pan
  • 擦除區(qū)域
    • 獲取當(dāng)前手指的點(diǎn)locationInView
    • rectWH = 30
    • X:當(dāng)前點(diǎn)x- 寬度的一半
    • Y:當(dāng)前點(diǎn)y- 高度一半
  • 開啟上下文Begin
  • 把圖片內(nèi)容畫到畫板上renderInContext
  • 擦除
    • CGContextClearRect(context,rect)
  • 生成一張圖片Get
  • 關(guān)閉上下文End
  • 替換imageView
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市吟策,隨后出現(xiàn)的幾起案子儒士,更是在濱河造成了極大的恐慌,老刑警劉巖檩坚,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件着撩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡效床,警方通過查閱死者的電腦和手機(jī)睹酌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剩檀,“玉大人憋沿,你說我怎么就攤上這事』铮” “怎么了辐啄?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵采章,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我壶辜,道長(zhǎng)悯舟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任砸民,我火速辦了婚禮抵怎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘岭参。我一直安慰自己反惕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布演侯。 她就那樣靜靜地躺著姿染,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秒际。 梳的紋絲不亂的頭發(fā)上悬赏,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音娄徊,去河邊找鬼闽颇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛嵌莉,可吹牛的內(nèi)容都是我干的进萄。 我是一名探鬼主播捻脖,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锐峭,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了可婶?” 一聲冷哼從身側(cè)響起沿癞,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎矛渴,沒想到半個(gè)月后椎扬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡具温,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年蚕涤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铣猩。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡揖铜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出达皿,到底是詐尸還是另有隱情天吓,我是刑警寧澤贿肩,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站龄寞,受9級(jí)特大地震影響汰规,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜物邑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一溜哮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧色解,春花似錦茬射、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至萧恕,卻和暖如春刚梭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背票唆。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工朴读, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人走趋。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓衅金,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親簿煌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子氮唯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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