Archive

Posts Tagged ‘Colors’

Background info on libpng warning: iCCP: known incorrect sRGB profile

I was just checking some log file saved from Buildbox and seems Qt framework was logging the error:

libpng warning: iCCP: known incorrect sRGB profile

Did some quick research on Google (sorry dear Bing) and added the following background info to the respective question on StackOverflow:

http://stackoverflow.com/questions/22745076/libpng-warning-iccp-known-incorrect-srgb-profile/

Some changes in libpng version 1.6+ cause it to issue a warning or even not work correctly with the original HP/MS sRGB profile, leading to the following stderr: libpng warning: iCCP: known incorrect sRGB profile The old profile uses a D50 whitepoint, where D65 is standard. This profile is not uncommon, being used by Adobe Photoshop, although it was not embedded into images by default.

(source: https://wiki.archlinux.org/index.php/Libpng_errors)

Error detection in some chunks has improved; in particular the iCCP chunk reader now does pretty complete validation of the basic format. Some bad profiles that were previously accepted are now rejected, in particular the very old broken Microsoft/HP sRGB profile. The PNG spec requirement that only grayscale profiles may appear in images with color type 0 or 4 and that even if the image only contains gray pixels, only RGB profiles may appear in images with color type 2, 3, or 6, is now enforced. The sRGB chunk is allowed to appear in images with any color type.

(source: https://forum.qt.io/topic/58638/solved-libpng-warning-iccp-known-incorrect-srgb-profile-drive-me-nuts/16)

Advertisements
Categories: Posts Tags: , , , , , , ,

HowTo: List all known color names and find name of given color at WPF

This is my answer at
http://stackoverflow.com/questions/4475391/wpf-silverlight-find-the-name-of-a-color

Modified answer from Thomas Levesque to populate the Dictionary only when 1st needed, instead of taking the cost at startup (going to use at speech recognition-driven turtle graphics, so that user can pronounce known color names to change the turtle’s pen color)

  1. //Project: SpeechTurtle (http://SpeechTurtle.codeplex.com)
  2. //Filename: ColorUtils.cs
  3. //Version: 20150901
  4.  
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Reflection;
  8. using System.Windows.Media;
  9.  
  10. namespace SpeechTurtle.Utils
  11. {
  12.   /// <summary>
  13.   /// Color-related utility methods
  14.   /// </summary>
  15.   public static class ColorUtils //based on http://stackoverflow.com/questions/4475391/wpf-silverlight-find-the-name-of-a-color
  16.   {
  17.     #region — Fields —
  18.  
  19.     private static Dictionary<string, Color> knownColors; //=null
  20.  
  21.     #endregion
  22.  
  23.     #region — Methods —
  24.  
  25.     #region Extension methods
  26.  
  27.     public static string GetKnownColorName(this Color color)
  28.     {
  29.       return GetKnownColors()
  30.           .Where(kvp => kvp.Value.Equals(color))
  31.           .Select(kvp => kvp.Key)
  32.           .FirstOrDefault();
  33.     }
  34.  
  35.     public static Color GetKnownColor(this string name)
  36.     {
  37.       Color color;
  38.       return GetKnownColors().TryGetValue(name, out color) ? color : Colors.Black; //if color for name is not found, return black
  39.     }
  40.  
  41.     #endregion
  42.  
  43.     public static Dictionary<string, Color> GetKnownColors()
  44.     {
  45.       if (knownColors == null)
  46.       {
  47.         var colorProperties = typeof(Colors).GetProperties(BindingFlags.Static | BindingFlags.Public);
  48.         knownColors = colorProperties.ToDictionary(
  49.           p => p.Name,
  50.           p => (Color)p.GetValue(null, null));
  51.       }
  52.       return knownColors;
  53.     }
  54.  
  55.     public static string[] GetKnownColorNames()
  56.     {
  57.       return GetKnownColors().Keys.ToArray();
  58.     }
  59.  
  60.     #endregion
  61.   }
  62. }

%d bloggers like this: