国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

CGImageRef像素位圖參數(shù)說(shuō)明

2019-11-06 06:12:00
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
iOS中對(duì)圖片進(jìn)行重繪處理的方法總結(jié)一、CGImageRef是什么CGImageRef是定義在QuartzCore框架中的一個(gè)結(jié)構(gòu)體指針,用C語(yǔ)言編寫(xiě)。在CGImage.h文件中,我們可以看到下面的定義:typedef struct CGImage *CGImageRef;CGImageRef 和 struct CGImage * 是完全等價(jià)的。這個(gè)結(jié)構(gòu)用來(lái)創(chuàng)建像素位圖,可以通過(guò)操作存儲(chǔ)的像素位來(lái)編輯圖片。QuartzCore這個(gè)框架是可移植的。二、CGImageRef相關(guān)的一些方法解析 CFTypeID CGImageGetTypeID(void)這個(gè)方法返回的是一個(gè)編號(hào),每個(gè)Core Foundation框架中得結(jié)構(gòu)都會(huì)有一個(gè)這樣的編號(hào),CFTypeID定義如下:#if __LLP64__typedef unsigned long long CFTypeID;typedef unsigned long long CFOptionFlags;typedef unsigned long long CFHashCode;typedef signed long long CFIndex;#elsetypedef unsigned long CFTypeID;typedef unsigned long CFOptionFlags;typedef unsigned long CFHashCode;typedef signed long CFIndex;#endif這個(gè)方法沒(méi)有特殊的意義,只是一個(gè)標(biāo)識(shí)符。 CGImageRef CGImageCreate(size_t width, size_t height, size_t bitsPerComponent, size_t bitsPerPixel, size_t bytesPerRow, CGColorSpaceRef space, CGBitmapInfo bitmapInfo, CGDataPRoviderRef provider, const CGFloat decode[], bool shouldInterpolate, CGColorRenderingIntent intent);通過(guò)這個(gè)方法,我們可以創(chuàng)建出一個(gè)CGImageRef類(lèi)型的對(duì)象,下面分別對(duì)參數(shù)進(jìn)行解釋?zhuān)?sizt_t是定義的一個(gè)可移植性的單位,在64位機(jī)器中為8字節(jié),32位位4字節(jié)。 width:圖片寬度像素 height:圖片高度像素 bitsPerComponent:每個(gè)顏色的比特?cái)?shù),例如在rgba-32模式下為8bitsPerPixel:每個(gè)像素的總比特?cái)?shù)bytesPerRow:每一行占用的字節(jié)數(shù),注意這里的單位是字節(jié)space:顏色空間模式,例如const CFStringRef kCGColorSpaceGenericRGB 這個(gè)函數(shù)可以返回一個(gè)顏色空間對(duì)象。bitmapInfo:位圖像素布局,枚舉如下:typedef CF_OPTIONS(uint32_t, CGBitmapInfo) { kCGBitmapAlphaInfoMask = 0x1F, kCGBitmapFloatComponents = (1 << 8), kCGBitmapByteOrderMask = 0x7000, kCGBitmapByteOrderDefault = (0 << 12), kCGBitmapByteOrder16Little = (1 << 12), kCGBitmapByteOrder32Little = (2 << 12), kCGBitmapByteOrder16Big = (3 << 12), kCGBitmapByteOrder32Big = (4 << 12)} provider:數(shù)據(jù)源提供者decode[]:解碼渲染數(shù)組shouldInterpolate:是否抗鋸齒intent:圖片相關(guān)參數(shù) CGImageRef CGImageMaskCreate(size_t width, size_t height, size_t bitsPerComponent, size_t bitsPerPixel, size_t bytesPerRow, CGDataProviderRef provider, const CGFloat decode[], bool shouldInterpolate)這個(gè)方法用于創(chuàng)建mask圖片圖層,可以設(shè)置其顯示部分與不顯示部分達(dá)到特殊的效果,參數(shù)意義同上。 CGImageRef CGImageCreateCopy(CGImageRef image)這個(gè)方法可以復(fù)制一個(gè)CGImageRef對(duì)象 CGImageRef CGImageCreateWithJPEGDataProvider(CGDataProviderRef source, const CGFloat decode[], bool shouldInterpolate, CGColorRenderingIntent intent)通過(guò)JPEG數(shù)據(jù)源獲取圖像 CGImageRef CGImageCreateWithPNGDataProvider(CGDataProviderRef source, const CGFloat decode[], bool shouldInterpolate, CGColorRenderingIntent intent)通過(guò)PNG數(shù)據(jù)源獲取圖像 CGImageRef CGImageCreateWithImageInRect(CGImageRef image, CGRect rect)截取圖像的一個(gè)區(qū)域重繪圖像 CGImageRef CGImageCreateWithMask(CGImageRef image, CGImageRef mask)截取mask圖像的某一區(qū)域重繪 CGImageRef CGImageCreateWithMaskingColors(CGImageRef image, const CGFloat components[])通過(guò)顏色分量數(shù)組創(chuàng)建位圖 CGImageRef CGImageCreateCopyWithColorSpace(CGImageRef image, CGColorSpaceRef space)通過(guò)顏色空間模式復(fù)制位圖 CGImageRef CGImageRetain(CGImageRef image)引用+1 void CGImageRelease(CGImageRef image)引用-1 bool CGImageIsMask(CGImageRef image)返回是否為Mask圖層 size_t CGImageGetWidth(CGImageRef image)獲取寬度像素 size_t CGImageGetHeight(CGImageRef image)獲取高度像素 下面這些方法分別獲取相應(yīng)屬性 size_t CGImageGetBitsPerComponent(CGImageRef image)size_t CGImageGetBitsPerPixel(CGImageRef image)size_t CGImageGetBytesPerRow(CGImageRef image)CGColorSpaceRef CGImageGetColorSpace(CGImageRef image)CG_EXTERN CGImageAlphaInfo CGImageGetAlphaInfo(CGImageRef image)CGDataProviderRef CGImageGetDataProvider(CGImageRef image)const CGFloat *CGImageGetDecode(CGImageRef image)bool CGImageGetShouldInterpolate(CGImageRef image)CGColorRenderingIntent CGImageGetRenderingIntent(CGImageRef image)CGBitmapInfo CGImageGetBitmapInfo(CGImageRef image) 三、應(yīng)用舉例使用CGImageRef進(jìn)行圖片截取 //原圖片 UIImage * img = [UIImage imageNamed:@"11.11.52.png"]; //轉(zhuǎn)化為位圖 CGImageRef temImg = img.CGImage; //根據(jù)范圍截圖 temImg=CGImageCreateWithImageInRect(temImg, CGRectMake(0, 0, 100, 100)); //得到新的圖片 UIImage *new = [UIImage imageWithCGImage:temImg]; //釋放位圖對(duì)象 CGImageRelease(temImg);注意:最后必須要調(diào)用這個(gè)函數(shù),否則會(huì)造成內(nèi)存泄露 CGImageRelease(temImg)
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 交口县| 南昌县| 嘉兴市| 天台县| 渑池县| 毕节市| 漠河县| 延津县| 渭南市| 红原县| 出国| 治多县| 博爱县| 亳州市| 丽江市| 张家港市| 德令哈市| 汽车| 德钦县| 三穗县| 惠州市| 田阳县| 开平市| 米易县| 宁安市| 周宁县| 常德市| 睢宁县| 栖霞市| 永泰县| 石狮市| 杭锦后旗| 石屏县| 乌苏市| 民县| 玛纳斯县| 张家川| 焉耆| 大丰市| 西平县| 武胜县|