如何在图像上实现alpha渐变?

Ale*_*nte 15 iphone gradient alpha quartz-2d ios

我想在图像上实现alpha渐变.从图像顶部的0.5 alfa到底部的0.0.欢迎任何建议,教程和链接.

Ano*_*mie 25

您可以使用它CGImageCreateWithMask来应用蒙版图像.您可以通过绘制到灰度或仅alpha的CGBitmapContext来生成适当的蒙版CGContextDrawLinearGradient.

如果它显示为CALayer的内容,则可以将适当的遮罩层应用于父图层的mask属性.您可以使用CAGradientLayer适当的颜色来创建此蒙版.

您可以将图像绘制到CGBitmapContext,然后使用相应的alpha渐变kCGBlendModeDestinationIn.或者首先绘制渐变,然后使用绘制图像kCGBlendModeSourceIn.在这两种情况下,CGContextDrawLinearGradient再次是你的朋友.然后,当然,使用CGBitmapContextCreateImageCGImageCreate在底层数据缓冲区中从CGContext中获取图像.

或者,当然,如果你控制原始图像并且永远不需要没有alpha渐变的版本,你可以将它作为具有适当alpha值的PNG存储在第一位.


vis*_*kh7 6

你可以试试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];
Run Code Online (Sandbox Code Playgroud)

另外一个选项

在前面的SO问题中尝试@Caleb建议的答案

你可以去图形上下文.所有绘图都在图形上下文中进行.如果要创建具有径向渐变,线性渐变或其他任何内容的图像,则需要:

  • 使用创建图像的图形上下文
    UIGraphicsBeginImageContextWithOptions.
  • 做你想要在图像中出现的任何绘图.
  • 调用UIGraphicsGetImageFromCurrentImageContext 从上下文中获取图像.
    这给你一个UIImage,所以不需要转换CGImage.
  • 打电话UIGraphicsEndImageContext来清理上下文.

您还可以查看UImage上的径向渐变