Hmm...
1. java.awt.Color.decode(colorStr);
2. You're using integer division "rgb.getRed()/255" will yield 0 or
1, which is then cast to float. Use "getRed()/255f" to get a float
result.
Your integer division code will only yield a red colour with
#FF8000, which I suspect gets superimposed on a white background (with
alpha, dithering, blurring, whatever) and ends up being pinkish.
Also the Color step is totally unnecessary:
int c = Integer.parseInt(colorStr.substring(1), 16);
float r = ((c & 0xFF0000) >> 16) / 255f;
float g = ((c & 0x00FF00) >> 8) / 255f;
float b = ((c & 0x0000FF) >> 0) / 255f; // The ">> 0" can be omitted
PDColor pdc = new PDColor( new float[] { r, g, b }, PDDeviceRGB.INSTANCE);
2017-03-13 12:27 GMT+02:00 chitgoks <[email protected]>:
> hi again
>
> a little assistance regarding converting hex to PDColor.
>
> please take this example #ff8000
>
> and this is my code
>
> String colorStr = "#ff8000";
> java.awt.Color rgb = new java.awt.Color(
> Integer.valueOf(colorStr.substring(1, 3), 16),
> Integer.valueOf(colorStr.substring(3, 5), 16),
> Integer.valueOf(colorStr.substring(5, 7), 16))
>
> PDColor pdcolor = new PDColor(new float[] { rgb.getRed() / 255,
> rgb.getGreen() / 255, rgb.getBlue() / 255}, PDDeviceRGB.INSTANCE);
>
> the result is pink-ish (the wrong color), instead of orange-ish (the
> correct color).
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]