- (uiimage *) Blurryimage: (uiimage *) image withblurlevel: (cgfloat) blur { ciimage *inputimage = [ciimage imagewithcgimage:image. cgimage]; cifilter *filter = [cifilter filterwithname:@ " Cigaussianblur " keysandvalues:kciinputimagekey, inputimage, @ "Inputradius", @ (Blur), nil]; CIImage *outputImage = filter.outputimage; cgimageref outimage = [self.context createcgimage:outputimage fromrect:[outputimage extent]]; return [ Uiimage imagewithcgimage:outimage];}
Blur using the Vimage API
- (uiimage *) Blurryimage: (uiimage *) Image withblurlevel: (cgfloat) blur { if (blur < 0.f | | &NBSP;BLUR&NBSP;>&NBSP;1.F) { blur = 0.5f; } int boxSize = (int) (BLUR&NBSP;*&NBSP;100); boxSize = boxSize - (boxsize % 2) + 1; cgimageref img = image. 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)); if (Pixelbuffer == null) nslog (@ "No Pixelbuffer "); 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) { nslog (@ "Error from convolution %ld", error); } CGColorSpaceRef colorSpace = Cgcolorspacecreatedevicergb (); cgcontextref ctx = cgbitmapcontextcreate ( outbuffer.data, outBuffer.width, outbuffer.height, 8, outbuffer.rowbytes, &nbsP; colorspace, Kcgimagealphanoneskiplast); cgimageref imageref = cgbitmapcontextcreateimage (CTX); uiimage *returnimage = [uiimage imageWithCGImage:imageRef]; //clean up cgcontextrelease (CTX); cgcolorspacerelease (ColorSpace); free (Pixelbuffer); cfrelease (InBitmapData); cgcolorspacerelease (colorspace); Cgimagerelease (imageref); &nBsp; return returnimage;}
Core image blurs image with Blur effect Vimage API