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...