oc 提取圖片中的顏色
阿新 • • 發佈:2019-01-09
一、下載地址
下載:https://github.com/puyangdev/PYColorPicker
二、 效果
三、關鍵程式碼
//獲取圖片某一點的顏色 - (UIColor *)colorAtPixel:(CGPoint)point { if (!CGRectContainsPoint(CGRectMake(0.0f, 0.0f, self.image.size.width, self.image.size.height), point)) { return nil; } NSInteger pointX = trunc(point.x); NSInteger pointY = trunc(point.y); CGImageRef cgImage = self.image.CGImage; NSUInteger width = self.image.size.width; NSUInteger height = self.image.size.height; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); int bytesPerPixel = 4; int bytesPerRow = bytesPerPixel * 1; NSUInteger bitsPerComponent = 8; unsigned char pixelData[4] = { 0, 0, 0, 0 }; CGContextRef context = CGBitmapContextCreate(pixelData, 1, 1, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); CGColorSpaceRelease(colorSpace); CGContextSetBlendMode(context, kCGBlendModeCopy); CGContextTranslateCTM(context, -pointX, pointY-(CGFloat)height); CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, (CGFloat)width, (CGFloat)height), cgImage); CGContextRelease(context); 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; NSLog(@"%f %f %f %f",(CGFloat)pixelData[0],(CGFloat)pixelData[1],(CGFloat)pixelData[2],(CGFloat)pixelData[3]); return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; }