iOS 单击图片UIImage提取图片上的颜色UIColor (OC)
2016-08-10 15:01
453 查看
新建UIImage的分类ColorAtPixel
公开方法
- (UIColor *)colorAtPixel:(CGPoint)point;
// 方法实现如下#import "UIImage+ColorAtPixel.h"
@implementation UIImage (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)) {
return nil;
}
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();
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);
// 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 [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
@end
公开方法
- (UIColor *)colorAtPixel:(CGPoint)point;
// 方法实现如下#import "UIImage+ColorAtPixel.h"
@implementation UIImage (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)) {
return nil;
}
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();
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);
// 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 [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
@end
相关文章推荐
- iOS 获取图片某一点的颜色对象UIColor
- iOS获取手指点击背景图的坐标的颜色(亲测,不需要关心UIImageView的frame是否跟图片大小一样)
- iOS开发小方法:根据UIColor一个颜色生成一张图片
- oc 提取图片中的颜色
- iOS 获取图片某一点的颜色对象(UIColor*)。
- iOS 获取图片某一点的颜色对象(UIColor*)。
- ios开发 button或UIimageview加载图片显示颜色不显示图片
- ios--OpenCV--提取图片(或者视频)的R,G,B颜色分量
- ios之把UIColor类型得到一张纯色的UIImage类型的图片
- iOS: 从ipa提取图片资源文件及从iOS设备提取ipa文件的方法
- Unity3D读取Ios中的动态UIImage图片
- IOS为UIImageView图片添加点击事件
- IOS 结合UIImageView实现图片的移动和缩放
- ios 使用UIImagePickerController 打开图片库和相机选择图片修改头像(iphone版本)
- ios用 UIImageView实现图片幻灯片
- [iOS代码] 根据文字生成图片UIImage
- IOS UIColor 自定义颜色
- IOS 对UIImage图片进行缩放
- IOS UIImage常用的加载图片有3种方式
- ios开发之16进制颜色(html颜色值)字符串转为UIColor