#import<UIKit/UIKit.h>#import<Accelerate/Accelerate.h>#import<QuartzCore/QuartzCore.h>@interfaceUIImage (Blur)//0.0 to 1.0-(uiimage*) Blurredimage: (cgfloat) Bluramount;@end#import "Uiimage+blur.h"@implementationUIImage (Blur)-(uiimage*) Blurredimage: (cgfloat) bluramount{if(Bluramount <0.0|| Bluramount >1.0) {Bluramount=0.5; } intBoxsize = (int) (Bluramount * +); Boxsize= boxsize-(boxsize%2) +1; Cgimageref img=Self . Cgimage; Vimage_buffer Inbuffer, Outbuffer; Vimage_error Error; void*Pixelbuffer; Cgdataproviderref Inprovider=Cgimagegetdataprovider (IMG); Cfdataref Inbitmapdata=Cgdataprovidercopydata (Inprovider); Inbuffer.width=cgimagegetwidth (IMG); Inbuffer.height=cgimagegetheight (IMG); Inbuffer.rowbytes=Cgimagegetbytesperrow (IMG); Inbuffer.data= (void*) cfdatagetbyteptr (inbitmapdata); Pixelbuffer= malloc (Cgimagegetbytesperrow (IMG) *cgimagegetheight (IMG)); Outbuffer.data=Pixelbuffer; Outbuffer.width=cgimagegetwidth (IMG); Outbuffer.height=cgimagegetheight (IMG); Outbuffer.rowbytes=Cgimagegetbytesperrow (IMG); Error= vimageboxconvolve_argb8888 (&inbuffer, &outbuffer, NULL,0,0, Boxsize, Boxsize, NULL, kvimageedgeextend); if(!error) {Error= vimageboxconvolve_argb8888 (&outbuffer, &inbuffer, NULL,0,0, Boxsize, Boxsize, NULL, kvimageedgeextend); if(!error) {Error= vimageboxconvolve_argb8888 (&inbuffer, &outbuffer, NULL,0,0, Boxsize, Boxsize, NULL, kvimageedgeextend); }} cgcolorspaceref ColorSpace=Cgcolorspacecreatedevicergb (); Cgcontextref CTX=cgbitmapcontextcreate (Outbuffer.data, Outbuffer.width, Outbuffer.height,8, Outbuffer.rowbytes, Colorspa CE, (cgbitmapinfo) kcgimagealphanoneskiplast); Cgimageref Imageref=cgbitmapcontextcreateimage (CTX); UIImage*returnimage =[UIImage Imagewithcgimage:imageref]; Cgcontextrelease (CTX); Cgcolorspacerelease (ColorSpace); Free (pixelbuffer); Cfrelease (Inbitmapdata); Cgcolorspacerelease (ColorSpace); Cgimagerelease (IMAGEREF); returnreturnimage;}@end
Use
UIImage *image = [[UIImage imagenamed: @ ' xxxx.png '] blurredimage:0.6];
IOS UIImage Blur