美文网首页
iOS 获取图片某一点的颜色对象 (UIColor *)

iOS 获取图片某一点的颜色对象 (UIColor *)

作者: Leopx | 来源:发表于2016-09-29 14:51 被阅读0次

    # XPXRefresh

    ``

    @interfaceUIImage (ColorAtPixel)

    - (UIColor*)colorAtPixel:(CGPoint)point;

    @end

    #import

    #import"UIImage+ColorAtPixel.h"

    @implementationUIImage (ColorAtPixel)

    - (UIColor*)colorAtPixel:(CGPoint)point {

    // Cancel if point is outside image coordinates

    if(!CGRectContainsPoint(CGRectMake(0.0f,0.0f,self.size.width,self.size.height), point)) {

    returnnil;

    }

    NSInteger pointX = trunc(point.x);

    NSInteger pointY = trunc(point.y);

    CGImageRef cgImage =self.CGImage;

    NSUInteger width =self.size.width;

    NSUInteger height =self.size.height;

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    intbytesPerPixel =4;

    intbytesPerRow =bytesPerPixel*1;

    NSUInteger bitsPerComponent =8;

    unsignedcharpixelData[4] = {0,0,0,0};

    CGContextRef context = CGBitmapContextCreate(pixelData,

    1,

    1,

    bitsPerComponent,

    bytesPerRow,

    colorSpace,

    kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);

    CGColorSpaceRelease(colorSpace);

    CGContextSetBlendMode(context, kCGBlendModeCopy);

    // Draw the pixel we are interested in onto the bitmap context

    CGContextTranslateCTM(context, -pointX, pointY-(CGFloat)height);

    CGContextDrawImage(context, CGRectMake(0.0f,0.0f, (CGFloat)width, (CGFloat)height), cgImage);

    CGContextRelease(context);

    // Convert color values [0..255] to floats [0.0..1.0]

    CGFloat red= (CGFloat)pixelData[0] /255.0f;

    CGFloat green = (CGFloat)pixelData[1] /255.0f;

    CGFloat blue= (CGFloat)pixelData[2] /255.0f;

    CGFloat alpha = (CGFloat)pixelData[3] /255.0f;

    return[UIColorcolorWithRed:redgreen:greenblue:bluealpha:alpha];

    }

    @end

    ``

    相关文章

      网友评论

          本文标题:iOS 获取图片某一点的颜色对象 (UIColor *)

          本文链接:https://www.haomeiwen.com/subject/ejakyttx.html