Quiero implementar un degradado alfa en una imagen. Desde 0.5 alfa en la parte superior de la imagen hasta 0.0 en la parte inferior. Cualquier consejo, tutorial, enlace es bienvenido.¿Cómo implementar un degradado alfa en una imagen?
Respuesta
Puede utilizar CGImageCreateWithMask
a aplicar una imagen de enmascaramiento a la misma. Puede generar una máscara adecuada simplemente dibujando en una escala de grises o en un CGBitmapContext solo alfa con CGContextDrawLinearGradient
.
Si se muestra como el contenido de un CALayer, puede aplicar una capa de enmascaramiento apropiada a la propiedad mask
de la capa primaria. Puede usar CAGradientLayer
con los colores apropiados para crear esta máscara.
Puede dibujar la imagen en un CGBitmapContext, y luego dibujar un degradado alfa apropiado sobre él usando kCGBlendModeDestinationIn
. O dibuja primero el degradado y dibuja la imagen sobre él usando kCGBlendModeSourceIn
. En ambos casos, CGContextDrawLinearGradient
es nuevamente tu amigo. Luego, por supuesto, obtenga la imagen del CGContext usando CGBitmapContextCreateImage
o CGImageCreate
en el buffer de datos subyacente.
O, por supuesto, si controla la imagen original y nunca necesita una versión sin el degradado alfa, podría simplemente almacenarla como un PNG con los valores alfa apropiados en primer lugar.
excelente respuesta gracias! – James
Cree una nueva imagen leyendo los píxeles en la imagen existente (obteniendo su RGBA) línea por línea agregándolos a la nueva imagen con los mismos valores RGB pero ajustando los valores alfa por línea.
Algunas otras de las preguntas que debe darle todo lo necesario para que:
How to get pixel data from a UIImage (Cocoa Touch) or CGImage (Core Graphics)?
Si bien esto funcionará, probablemente sea mucho más lento que usar Core Graphics. No olvide que también tendrá que ajustar los valores RGB si está utilizando alpha premultiplicado. – Anomie
Usted puede intentar CAGradientLayer
.
UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)] autorelease];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil];
[view.layer insertSublayer:gradient atIndex:0];
Otra opción
Prueba la respuesta sugerida por @Caleb en esta anterior SO question
Usted puede ir para Graphics Contexts. Todo el dibujo ocurre en un contexto de gráficos . Si desea crear una imagen que tiene un degradado radial, o un gradiente lineal , o cualquier otra cosa, Tendrá que:
- Crear un contexto gráfico para su imagen con
UIGraphicsBeginImageContextWithOptions
.- Haga el dibujo que desee que aparezca en la imagen.
- Llame
UIGraphicsGetImageFromCurrentImageContext
para obtener la imagen del contexto.
Esto le da unUIImage
, por lo que no es necesario para convertir a partir deCGImage
.- Llame al
UIGraphicsEndImageContext
para limpiar el contexto.También puede echar un vistazo a Radial gradient on UImage
Encontré algo here, ¡funciona genial!
AlphaGradientView* gradient = [[AlphaGradientView alloc] initWithFrame:
CGRectMake(self.view.frame.size.width - 150, 0, 150,
self.view.frame.size.height)];
gradient.color = [UIColor yellowColor];
gradient.direction = GRADIENT_RIGHT;
[self.view addSubview:gradient];
- 1. cómo dibujar una imagen en un lienzo con transparencia/alfa
- 2. javascript - cambiar el alfa de una imagen
- 3. C# Crear imagen de degradado
- 4. Algoritmo para mezclar esquinas rellenas de degradado en la imagen
- 5. ¿Cómo enmascarar los sprites en cocos2d por el alfa de un degradado?
- 6. Android y configuración alfa para (imagen) vista alfa
- 7. ¿Cómo encontrar el valor de transparencia del canal alfa de un píxel en una imagen png?
- 8. ¿Cómo desactivo un botón con una imagen sin reducir el alfa en el objetivo C?
- 9. Calcular el campo de vector de degradado de una imagen
- 10. Cómo recortar y rellenar un lienzo con una máscara alfa
- 11. HTML/CSS - crear máscara alfa sobre imagen
- 12. Mapa de imagen por canal alfa
- 13. Lienzo: ¿enmascarar una imagen y preservar su canal alfa?
- 14. ¿Cómo hacer un degradado transparente?
- 15. ¿Cómo normalizo una imagen?
- 16. IOS: establecer alfa en un UIImage
- 17. Con Python Imaging Library (PIL), ¿cómo se puede componer una imagen con un canal alfa sobre otra imagen?
- 18. Chrome suavidad degradado radial css
- 19. ¿Cómo puedo obtener una imagen del portapapeles sin perder el canal alfa en .NET?
- 20. Crear borde degradado en Android?
- 21. Cómo trazar una línea de color de degradado en matplotlib?
- 22. OpenCV: cómo aplicar el mapa de degradado del arco iris en una imagen?
- 23. Cómo teñir una imagen/mostrar un color?
- 24. Fondo de Android con degradado y mosaico de imagen
- 25. Cómo implementar degradado de opacidad del examinador cruzado (no gradiente de color)
- 26. GWT: Cómo aplicar un degradado CSS3
- 27. Mezcla alfa variable en pylab
- 28. ¿Se puede superponer un degradado css3 transparente sobre una imagen de fondo?
- 29. Rellenar una forma con un degradado en CGContext
- 30. En OSX, ¿cómo llento un degradado un trazo de ruta?
¿desea modificar la imagen original o solo le preocupa que se muestre con un degradado? – nielsbot
Solo quiero mostrar un degradado debajo de la imagen. –
Anomie ha cubierto este caso en su respuesta – nielsbot