Red de conocimiento informático - Conocimiento informático - Cómo implementar el efecto de desenfoque de vidrio esmerilado en tiempo real para iOS 7 a través de HTML5

Cómo implementar el efecto de desenfoque de vidrio esmerilado en tiempo real para iOS 7 a través de HTML5

Para lograr el efecto de desenfoque de vidrio esmerilado de IOS 7 a través de HTML5, debe implementarlo en el código

// 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);