【问题标题】:UIImage, is there an easy way to make it darker or all blackUIImage,有没有一种简单的方法可以使它变暗或全黑
【发布时间】:2010-11-04 16:46:45
【问题描述】:

我想获取一个objective-c UIImage 并使其全黑,但仍具有相同的alpha 值,以便它成为其先前图像的轮廓。我想知道除了获取 CGImage 数据并更改每个像素的值之外,还有什么更方便的方法吗?

【问题讨论】:

    标签: objective-c cocoa cocoa-touch uiimage


    【解决方案1】:

    您可以通过使用 kCGImageAlphaOnly 和 1 个组件创建 CGBitmapContext 来提取 alpha 信息并绘制到其中。然后你会得到一个只有 alpha 的图像。

    然后您可以使用 kCGBlendModeDestinationIn 将其合成到全黑图像上。这应该会为您留下一张全黑且带有原始 alpha 值的图像。

    【讨论】:

      【解决方案2】:

      这是我用来制作图像彩色版本的函数:

      @interface NSImage( ColorizedImageAdditions )
      
      - (NSImage*) colorizedImage: (NSColor*) color;
      
      @end
      
      - (NSImage*) colorizedImage: (NSColor*) color
      {
          NSSize imageSize = [ self size ];
          NSImage* result = [ [ [ NSImage alloc ] initWithSize: imageSize ] autorelease ];
      
          [ result lockFocus ];
          [ NSGraphicsContext saveGraphicsState ];
      
          NSRect imageBounds = NSMakeRect( 0, 0, imageSize.width, imageSize.height );
      
          [ color setFill ];
          [ NSBezierPath fillRect: imageBounds ];
      
          [ self drawInRect: imageBounds fromRect: NSZeroRect 
                  operation: NSCompositeDestinationIn fraction: 1.0 ];
      
          [ NSGraphicsContext restoreGraphicsState ];
          [ result unlockFocus ];
      
          return result;
      }
      

      它利用 NSCompositeDestinationIn 操作以所需的颜色填充图像的不透明区域。

      【讨论】:

        猜你喜欢
        • 2011-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多