2013-10-22 80 views
0

RGB選擇顏色,並將其與顏色名稱如何在目標c中打印RGB顏色的名稱?

我的代碼

color =[UIColor colorWithRed:255/255.0 green:0.0/255.0 blue:0.0/255.0 alpha:pixel[3]/255.0]; 

電流輸出保存在字符串:Color print: 1 0 0 1

預期輸出:Color = Red

+0

什麼重寫'description',檢查它是否匹配任何「已知的iOS」色彩,並打印成? – Larme

+0

[我的答案在這裏](http://stackoverflow.com/questions/19454398/java-applet-get-the-name-of-the-colour-being-used-in-paint/19461345#19461345)可能是使用。 – user1118321

回答

0

嘗試這樣的: -

color =[UIColor colorWithRed:66.0f/255.0f green:79.0f/255.0f blue:91.0f/255.0f alpha:1.0f] 
+0

我有沒有打印RGB顏色代碼的名字,但我有打印的顏色名稱黑色,藍色,紅色等... – hemant

+0

我有托盤這段代碼放在出來:UIDeviceRGBColorSpace 0.258824 0.309804 0.356863 1請求出放不變色RGB代碼,但顏色名稱 – hemant

1

我不認爲有辦法打印顏色的名稱。有很多這樣的組合。您可以將RGB值作爲字符串打印:

CGColorRef colorRef = [UIColor grayColor].CGColor; 
NSString *colorString = [CIColor colorWithCGColor:colorRef].stringRepresentation; 
NSLog(@"colorString = %@", colorString); 

要打印實際名稱,您需要自行完成更多工作。用RGB值保存名稱,然後根據您的組合檢索它們。

+0

沒有添加顏色名稱,但只添加了RGB顏色代碼,使顏色名稱灰色,藍色,黑色等...... – hemant

+0

我得到你在找什麼。但這是不可能的。即使使用上面提到的顏色名稱,也可以打印RGB和alpha組件。想象一下,有這麼多的顏色組合! – Abhinav

+0

我有觸摸圖像和提取選擇特德圖像顏色,並傳遞給webservice – hemant

0

基金會沒有內置的方法來做到這一點,但如果你真的想要這樣做,由於任何要求。這裏是你可以做什麼:

1-選擇的顏色列表他們的名字here

2-一起拯救那些顏色名稱對RGB值的地方。

3-現在,您可以選擇與RGB值最匹配的顏色名稱。

+0

我已觸摸圖像和提取顏色名稱 – hemant

+0

我的提取顏色代碼無符號字符像素[4] = {0}; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(pixel,1,1,8,4,colorSpace,kCGImageAlphaPremultipliedLast); CGContextTranslateCTM(context,-point.x,-point.y); [self.view。layer renderInContext:context]; CGContextRelease(context); CGColorSpaceRelease(colorSpace); UIColor * color = [UIColor colorWithRed:pixel [0] /255.0 green:pixel [1] /255.0 blue:pixel [2] /255.0 alpha:pixel [3] /255.0]; – hemant

1

我只是試過這個,它似乎工作得很好。我選擇的硬編碼值取決於事物對我的看法。如果「明亮」和「黑暗」對你來說意味着別的東西,隨時可以改變它們。

- (NSString*)colorNameFromColor:(NSColor*)chosenColor 
{ 
    NSColor* calibratedColor = [chosenColor colorUsingColorSpaceName:NSCalibratedRGBColorSpace]; 

    CGFloat hue; 
    CGFloat saturation; 
    CGFloat brightness; 
    [calibratedColor getHue:&hue 
       saturation:&saturation 
       brightness:&brightness 
         alpha:nil]; 

    // I found that when the saturation was below 1% I couldn't tell 
    // the color from gray 
    if (saturation <= 0.01) 
    { 
     saturation = 0.0; 
    } 

    NSString* colorName = @""; 

    // If saturation is 0.0, then this is a grayscale color 
    if (saturation == 0.0) 
    { 
     if (brightness <= 0.2) 
     { 
      colorName = @"black"; 
     } 
     else if (brightness > 0.95) 
     { 
      colorName = @"white"; 
     } 
     else 
     { 
      colorName = @"gray"; 

      if (brightness < 0.33) 
      { 
       colorName = [@"dark " stringByAppendingString:colorName]; 
      } 
      else if (brightness > 0.66) 
      { 
       colorName = [@"light " stringByAppendingString:colorName]; 
      } 
     } 
    } 
    else 
    { 
     if ((hue <= 15.0/360.0) || (hue > 330.0/360.0)) 
     { 
      colorName = @"red"; 
     } 
     else if (hue < 45.0/360.0) 
     { 
      colorName = @"orange"; 
     } 
     else if (hue < 70.0/360.0) 
     { 
      colorName = @"yellow"; 
     } 
     else if (hue < 150.0/360.0) 
     { 
      colorName = @"green"; 
     } 
     else if (hue < 190.0/360.0) 
     { 
      colorName = @"cyan"; 
     } 
     else if (hue < 250.0/360.0) 
     { 
      colorName = @"blue"; 
     } 
     else if (hue < 290.0/360.0) 
     { 
      colorName = @"purple"; 
     } 
     else 
     { 
      colorName = @"magenta"; 
     } 

     if (brightness < 0.5) 
     { 
      colorName = [@"dark " stringByAppendingString:colorName]; 
     } 
     else if (brightness > 0.8) 
     { 
      colorName = [@"bright " stringByAppendingString:colorName]; 
     } 
    } 

    return colorName; 
} 
+0

這不好,想要所有的顏色名稱,不知道它或建議? –