iOS 關於UIImage的處理總結

2021-07-22 22:10:19 字數 2717 閱讀 6252

void providerreleasedata (void *info, const void *data, size_t size)
#pragma mark - 去掉最常見顏色為透明顏色

- (uiimage*)imageblacktotransparent:(uiimage*)image weight:(nsinteger)weight

//// else

////

}// 將記憶體轉成image

cgdataproviderref dataprovider = cgdataprovidercreatewithdata(null, rgbimagebuf, bytesperrow * imageheight, providerreleasedata);

cgimageref imageref = cgimagecreate(imagewidth, imageheight, 8, 32, bytesperrow, colorspace,

kcgimagealphalast | kcgbitmapbyteorder32little, dataprovider,

null, true, kcgrenderingintentdefault);

cgdataproviderrelease(dataprovider);

uiimage* resultuiimage = [uiimage imagewithcgimage:imageref];

// 釋放

cgimagerelease(imageref);

cgcontextrelease(context);

cgcolorspacerelease(colorspace);

// free(rgbimagebuf) 建立dataprovider時已提供釋放函式,這裡不用free

return resultuiimage;

}

#pragma mark - 獲取中出現次數最多的rgb

-(nsdictionary*)mostcolorfromimage:(uiimage *)image

#pragma mark - 合併2張

- (uiimage *)addimage:(uiimage *)image1 toimage:(uiimage *)image2

#pragma mark - 將uiimage縮放到指定大小尺寸

- (uiimage *)scaletosize:(uiimage *)img size:(cgsize)size

#pragma mark - 根據的大小等比例壓縮返回

-(uiimage *)fitsmallimage:(uiimage *)image size:(cgsize)size

if (image.size.width&&image.size.height)

uigraphicsbeginimagecontext(size);

cgrect rect = cgrectmake(0, 0, size.width, size.height);

[image drawinrect:rect];

uiimage *newing = uigraphicsgetimagefromcurrentimagecontext();

uigraphicsendimagecontext();

return newing;

}

#pragma mark - 獲取點對應的顏色

+ (uicolor*) getpixelcoloratlocation:(cgpoint)point inimage:(uiimage *)image 

size_t w = cgimagegetwidth(inimage);

size_t h = cgimagegetheight(inimage);

cgrect rect = ,};

cgcontextdrawimage(cgctx, rect, inimage);

unsigned char* data = cgbitmapcontextgetdata (cgctx);

if (data != null)

cgcontextrelease(cgctx);

if (data)

return color;

}+ (cgcontextref) createargbbitmapcontextfromimage:(cgimageref) inimage

bitmapdata = malloc( bitmapbytecount );

if (bitmapdata == null)

context = cgbitmapcontextcreate (bitmapdata,

pixelswide,

pixelshigh,

8,

bitmapbytesperrow,

colorspace,

kcgimagealphapremultipliedfirst);

if (context == null)

cgcolorspacerelease( colorspace );

return context;

}

參考文章

iOS 關於UIImage的壓縮問題

uiimage img uiimage imagenamed example.png 兩種轉化方式,nsdata data uiimagejpegrepresentation img,0.0001 nsdata data1 uiimagepngrepresentation img nslog dat...

ios修改UIImage的大小

修改uislider的最大值和最小值的時候,發現需要修改的大小,否則會導致uislider變形。目前蘋果還不支援直接修改uiimage類的大小,只能修改uiimageview的大小。所以只能通過寫方法的方式來實現修改。如下 import inte ce uiimage scale uiimage t...

IOS瘋狂基礎之UIImage

cgimage和cgimageref這兩個應當是用來重繪圖形的類,它們在應用時是按照影象的畫素矩陣來繪製的,它們可以用來處理bitmap。cgimageref與uiimage的互轉 cgimageref轉換成uiimage cgimageref ioffscreen cgbitmapcontextc...