Cómo implementar el efecto de desenfoque de vidrio esmerilado en tiempo real para iOS 7 a través de HTML5
// Agregue el efecto de desenfoque, la imagen es la imagen y el desenfoque es el nivel de desenfoque
- (UIImage * )borrosaImagen: (UIImage *)imagen conBlurLevel: (CGFloat)desenfoque {
//nivel de desenfoque,
if ((blur lt; 0.1f) || (desenfoque gt; 2.0 f)) {
desenfoque = 0.5f
}
//boxSize debe ser mayor que 0
int boxSize = (int)(blur * 100
boxSize -= (boxSize 2)
NSLog(@"boxSize); :i",boxSize);
p>
// Procesamiento de imágenes
CGImageRef img = image.CGImage;
//necesita ser introducido #import lt; Accelerate/Accelerate .hgt;
/*
Este documento presenta el marco Accelerate, que contiene API de C para matemáticas vectoriales y matriciales. procesamiento de señales digitales, procesamiento de grandes números y procesamiento de imágenes.
*/
//Caché de imagen, InputCache, OutputCache
vImage_Buffer inBuffer, outBuffer
error vImage_Error
void * pixelBuffer;
//Proveedor de fuente de datos, define un tipo opaco para proporcionar datos para Quartz.
CGDataProviderRef inProvider = CGImageGetDataProvider(img);
// Datos del proveedor.
CFDataRef inBitmapData = CGDataProviderCopyData(inProvider);
//ancho, alto, bytes/fila, datos
inBuffer.width = CGImageGetWidth(img);
inBuffer.height = CGImageGetHeight(img);
inBuffer.rowBytes = CGImageGetBytesPerRow(img);
inBuffer.data = (void*)CFDataGetBytePtr(inBitmapData) ;
//Búfer de imagen, fila de bytes * altura de la imagen
pixelBuffer = malloc(CGImageGetBytesPerRow(img) * CGImageGetHeight(img));
p>
outBuffer.data = pixelBuffer;
outBuffer.width = CGImageGetWidth(img);
outBuffer.height = CGImageGetHeight(img); >
outBuffer.rowBytes = CGImageGetBytesPerRow(img);
// El tercer búfer intermedio se utiliza para efectos anti-aliasing
void *pixelBuffer2 = malloc(CGImageGetBytesPerRow(img) * CGImageGetHeight( img));
vImage_Buffer outBuffer2;
outBuffer2.data = pixelBuffer2;
outBuffer2.width = CGImageGetWidth(img);
outBuffer2.height = CGImageGetHeight(img);