码迷,mamicode.com
首页 > 移动开发 > 详细

iOS获取UIColor对象的CMYK值

时间:2015-01-06 12:03:55      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:



/**

 * 获取UIColor对象的CMYK字符串值。

 */

- (NSString *)getCMYKStringValueByColor:(UIColor *)originColor{

  // Method provided by the Colours class extension

  NSDictionary *cmykDict = [self getCMYKValueByColor:originColor];

  return [NSString stringWithFormat:@"(%0.2f, %0.2f, %0.2f, %0.2f)",

          [cmykDict[@"C"] floatValue],

          [cmykDict[@"M"] floatValue],

          [cmykDict[@"Y"] floatValue],

          [cmykDict[@"K"] floatValue]];

}



/**

 *  获取UIColor对象的CMYK值。

 *

 *  @return

 */

- (NSDictionary *)getCMYKValueByColor:(UIColor *)originColor

{

  // Convert RGB to CMY

 NSDictionary *rgb = [selfgetRGBDictionaryByColor:originColor];

 CGFloat C = 1 - [rgb[@"R"]floatValue];

 CGFloat M = 1 - [rgb[@"G"]floatValue];

 CGFloat Y = 1 - [rgb[@"B"]floatValue];

  

  // Find K

 CGFloat K = MIN(1,MIN(C, MIN(Y, M)));

 if (K == 1) {

    C =0;

    M =0;

    Y =0;

  }

 else {

   void (^newCMYK)(CGFloat *);

    newCMYK = ^(CGFloat *x){

      *x = (*x - K)/(1 - K);

    };

    newCMYK(&C);

    newCMYK(&M);

    newCMYK(&Y);

  }

  

 return @{@"C":@(C),

          @"M":@(M),

          @"Y":@(Y),

          @"K":@(K)};

}



/**

 *  获取UIColor对象的RGB值。

 *

 *  @return 包含rgb值的字典对象。

 */

- (NSDictionary *)getRGBDictionaryByColor:(UIColor *)originColor

{

 CGFloat r=0,g=0,b=0,a=0;

 if ([self respondsToSelector:@selector(getRed:green:blue:alpha:)]) {

    [originColorgetRed:&r green:&gblue:&b alpha:&a];

  }

 else {

   const CGFloat *components =CGColorGetComponents(originColor.CGColor);

    r = components[0];

    g = components[1];

    b = components[2];

    a = components[3];

  }

  

 return @{@"R":@(r),

          @"G":@(g),

          @"B":@(b),

          @"A":@(a)};

}


iOS获取UIColor对象的CMYK值

标签:

原文地址:http://blog.csdn.net/shouqiangwei/article/details/42455021

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!