¿Cómo usaría los gráficos Core solo para generar un fondo de textura de ruido? Estoy atascado en la parte de ruido porque no hay forma de agregar un filtro de ruido en los gráficos del núcleo ...Ruido Gaussiano solo con Core Graphics?
Respuesta
Un año más tarde, he encontrado la respuesta:
CGImageRef CGGenerateNoiseImage(CGSize size, CGFloat factor) CF_RETURNS_RETAINED {
NSUInteger bits = fabs(size.width) * fabs(size.height);
char *rgba = (char *)malloc(bits);
srand(124);
for(int i = 0; i < bits; ++i)
rgba[i] = (rand() % 256) * factor;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef bitmapContext = CGBitmapContextCreate(rgba, fabs(size.width), fabs(size.height),
8, fabs(size.width), colorSpace, kCGImageAlphaNone);
CGImageRef image = CGBitmapContextCreateImage(bitmapContext);
CFRelease(bitmapContext);
CGColorSpaceRelease(colorSpace);
free(rgba);
return image;
}
Esto genera efectivamente una imagen de ruido que está garantizado a ser al azar, y se pueden extraer, utilizando el código de la respuesta de Jason Harwig .
Crea un ruido png, luego dibuja usando una mezcla de superposición.
// draw background
CGContextFillRect(context, ...)
// blend noise on top
CGContextSetBlendMode(context, kCGBlendModeOverlay);
CGImageRef cgImage = [UIImage imageNamed:@"noise"].CGImage;
CGContextDrawImage(context, rect, cgImage);
CGContextSetBlendMode(context, kCGBlendModeNormal);
Por Pure Core Graphics también quería hacer ruido en Core Graphics ... El requisito de mi aplicación es que no use archivos png, por desgracia. –
Es un requisito extraño. Pude ver la independencia de la resolución como la razón, pero solo usar dos png de resolución diferente lo resolverá. –
No obstante, eso funcionaría ... ¿Hay alguna manera de codificar el UIImage como datos de texto que podría traer de una clase personalizada? EDITAR: ¿No podría crear una clase contenedora personalizada con un valor codificado base64 de la imagen en formato Retina, y escribir algunos métodos simples para devolver la imagen en cualquier tamaño/formato? –
Hay una CIRandomGenerator en CoreImageFilters como de iOS 6. Pero hay que tener en cuenta que éste no es el ruido gaussiano (ya que no es en la respuesta anterior).
- (UIImage*)linearRandomImage:(CGRect)rect
{
CIContext *randomContext = [CIContext contextWithOptions:nil];
CIFilter *randomGenerator = [CIFilter filterWithName: @"CIColorMonochrome"];
[randomGenerator setValue:[[CIFilter filterWithName:@"CIRandomGenerator"] valueForKey:@"outputImage"] forKey:@"inputImage"];
[randomGenerator setDefaults];
CIImage *resultImage = [randomGenerator outputImage];
CGImageRef ref = [randomContext createCGImage:resultImage fromRect:rect];
UIImage *endImage=[UIImage imageWithCGImage:ref];
return endImage;
}
- 1. Core Image vs Core Graphics
- 2. Learning Core Graphics
- 3. Core Graphics sistema de coordenadas
- 4. Ventajas de utilizar Core Graphics
- 5. Core Graphics & GIF Color Table
- 6. Biselando una ruta/forma en Core Graphics
- 7. ¿Cómo eliminar el ruido gaussiano de una imagen en MATLAB?
- 8. ¿Cómo hago un punto usando Core Graphics?
- 9. Cambiar el tamaño de la imagen en Core Graphics
- 10. ¿Es seguro este hilo del código de Core Graphics?
- 11. Core Graphics Vs Imágenes para un botón personalizado
- 12. desenfoque gaussiano con FFT
- 13. ¿Obliga a una ventana a redibujarse utilizando Core Graphics?
- 14. iPhone Core Graphics línea discontinua más gruesa para la subvista
- 15. Cómo dibujar un rectángulo redondeado en Core Graphics/Quartz 2D?
- 16. ¿Qué partes de UIKit, Core Graphics, Core Animation, OpenGL están permitidas en no main-thread?
- 17. Filtro gaussiano con OpenGL Shaders
- 18. Recorte interno con Java Graphics
- 19. Cómo dibujar una línea de degradado (fundido de entrada/salida) con Core Graphics/iPhone?
- 20. Cómo crear efectos en relieve o en la sombra con Core Graphics (para pintura de dedos)
- 21. PHP/GD gaussiano Efecto
- 22. Android NDK con C++ Graphics Engine
- 23. Implementar Naive Bayes gaussiano
- 24. ¿Por qué UIBezierPath es más rápido que la ruta de Core Graphics?
- 25. Alinear texto con Java Graphics 2d
- 26. ¿Cómo hacer un degradado cónico en iOS usando Core Graphics/Quartz 2D?
- 27. PHP/GD: Mejor desenfoque gaussiano
- 28. Procesamiento JSON sin ruido con Scala
- 29. JavaScript ruido
- 30. Eliminación de ruido sinusoidal con filtro Butterworth
Tenga en cuenta que la imagen devuelta desde esta función tiene un conteo de retención de +1 y necesita ser liberado usando CFRelease (imagen) después de que termine de dibujarlo. De lo contrario, se filtra. Además, el nombre de la función debe cambiarse para reflejar esto. Debe contener "nuevo" o "crear" en algún lugar. – Bryan
¡Gracias! Solucionado con 'CF_RETURNS_RETAINED'. –