結束使用cgcontext進行顏色的拾取能夠節省記憶體的使用(cgcontext對管理的具體使用後期來專講一下)
獲取uiimageview中的uiimage
拾取座標的轉換
利用bitmapinfo來獲取uiimage的rgb分布
利用cgcontext獲取目標畫素的分布值
輸出對應位置的顏色值
func getcolor(inimageview imageview: uiimageview, selectedpoint: cgpoint) -> uicolor?
// 用來存放目標畫素值
var pixel = [uint8](repeatelement(0, count: 4))
// 顏色空間為 rgb,這決定了輸出顏色的編碼是 rgb 還是其他(比如 yuv)
let colorspace = cgcolorspacecreatedevicergb()
// 設定位圖顏色分布為 rgba
let bitmapinfo = cgimagealphainfo.premultipliedlast.rawvalue
guard let context = cgcontext(data: &pixel, width: 1, height: 1, bitspercomponent: 8, bytesperrow: 4, space: colorspace, bitmapinfo: bitmapinfo) else
// 設定 context 原點偏移為目標位置所有座標
context.translateby(x: -newselectedpoint.x, y: -newselectedpoint.y)
// 將影象渲染到 context 中
imageview.layer.render(in: context)
return uicolor(red: cgfloat(pixel[0]) / 255.0,
green: cgfloat(pixel[1]) / 255.0,
blue: cgfloat(pixel[2]) / 255.0,
alpha: cgfloat(pixel[3]) / 255.0)
}
view中包含uiimageview顯示需要採集顏色的
包含uibutton作為採集位置的指示器
利用uipangesturerecognizer實現拖動uibutton選擇採集位置
import uikit
typealias colorchange = (uicolor?)->void //選擇顏色的閉包
@ibdesignable //視覺化的關鍵字
class colorselectedview: uiview
required init?(coder adecoder: nscoder)
//mark:載入xib檔案的view檢視
func loadviewfromnib() -> uiview
//拖動選擇需要採集顏色的位置
在xib檔案中或者在storyboard視覺化介面中直接使用
在**中直接使用
@iboutlet weak var colorselectedview: colorselectedview!
...colorselectedview.colorchange =
}
哈哈,可以自己拖動button進行位置選擇,當拖動時會實時輸出選中位置的顏色。好了,就是這麼簡單!你也來試試吧! 用VC 開發乙個螢幕顏色拾取器
一 用到的關鍵api及說明 1 函式功能 該函式檢索指定座標點的畫素的rgb顏色值。函式原型 colorref getpixel hdc hdc,int nxpos,int nypos 2 函式功能 捕捉滑鼠訊息 函式原型 hwnd setcapture hwnd hwnd hwnd 當前執行緒裡要...
自己動手擼乙個靜態部落格生成器
國慶期間試著擼了個靜態部落格工具 歡迎一起交流 github.com laoqiren yo npm npm npm 乙個靜態部落格生成器,採用node.js開發。yohe 喲呵,乙個會讓你發出 喲呵,不錯哦 感嘆的靜態部落格生成器。線上demo luoxia.me yohe site englis...
手摸手教你擼乙個可拖拽元件(附原始碼)
業務需求 1 實現乙個可以全頁面可以拖拽的元件 2 順帶介紹一下vue draggable外掛程式,可以實現多個元件之間的拖動 展示一下效果圖 這個元件我是借用的vue的directive自定義指令的方式實現的,如果對vue的自定義指令還是不很熟悉的話可以先去官網了解一波,當然熟悉的童鞋也可以不用v...