[IOS]调色板
来源:互联网 发布:overture mac注册码 编辑:程序博客网 时间:2024/04/29 04:46
[IOS]调色板
Demo:http://download.csdn.net/detail/u012881779/9408857
功能:使用用户在UIImageView上的触摸点从UIImage获取该点的UIColor(RGB)
先使用Category方式拓展UIImage
#import "UIImage+ColorSelect.h"@implementation UIImage (ColorSelect)- (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再创建控制器从UIImagView获取CGPoint
#import "SelectColorViewController.h"#import "UIImage+ColorSelect.h"@interface SelectColorViewController ()//素材图片不要拉伸去适配分辨率,那样获取的颜色会不准确@property (weak, nonatomic) IBOutlet UIImageView *sourceImgView;@property (weak, nonatomic) IBOutlet UIImageView *resultImagView;@end@implementation SelectColorViewController- (void)viewDidLoad { [super viewDidLoad]; }//完成选择-(void)finishedAction:(CGPoint)point{ UIColor *tempColor = [_sourceImgView.image colorAtPixel:point]; [_resultImagView setBackgroundColor:tempColor]; NSLog(@"\n_x=%f,y=%f",point.x,point.y);}//Touch- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ }- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch *touch = [touches anyObject]; CGPoint tempPoint = [touch locationInView:_sourceImgView]; [self finishedAction:tempPoint];}- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ }@end
示意图:
0 0
- [IOS]调色板
- 调色板
- 调色板
- 调色板
- 调色板
- 调色板
- 调色板
- 调色板
- 调色板
- 调色板
- 调色板
- 调色板
- 调色板
- 调色板程序
- web 调色板
- Domino调色板
- 调色板概念
- JS调色板
- ANDROID开发之http调试常见错误
- Android Studio生成APK自动追加版本号、自定义apk名称、指定签名证书文件
- Application is waiting for the debugger to attach
- 今天写后台的一些小经验
- 你知道游戏开发编程是干嘛的?
- [IOS]调色板
- Servlet入门第一个例子
- 常用的android弹出对话框 几乎包含了所有(1)
- $state.go 传递参数
- 短信验证SMSSDK的使用
- iOS 【Multithreading-GCD 延时执行操作】
- Android 动画相关笔记
- 复制集要点
- MATLAB入门