Returns the ARGB color with inverted alpha channel. - Java 2D Graphics

Java examples for 2D Graphics:Color RGB

Description

Returns the ARGB color with inverted alpha channel.

Demo Code


//package com.java2s;

public class Main {
    public static void main(String[] argv) throws Exception {
        String argb = "java2s.com";
        System.out.println(getColorWithInvertedAplha(argb));
    }/*from w  w w .  ja  va2  s.co  m*/

    /**
     * Returns the ARGB color with inverted alpha channel.
     *
     * @param argb Color in HEX format (either with or without alpha, e.g.
     *             #CCCCCC or #ffCCCCCC.
     * @return
     */
    public static String getColorWithInvertedAplha(String argb) {

        int[] components = getARGBComponents(argb);
        components[0] = 255 - components[0];

        return "#" + getTwoDigitHexString(components[0])
                + getTwoDigitHexString(components[1])
                + getTwoDigitHexString(components[2])
                + getTwoDigitHexString(components[3]);

    }

    /**
     * Return ARGB values in int array
     * @param argb Color in HEX format (either with or without alpha, e.g.
     *             #CCCCCC or #ffCCCCCC.
     * @return
     */
    private static int[] getARGBComponents(String argb) {

        if (argb.startsWith("#")) {
            argb = argb.replace("#", "");
        }

        int alpha = -1, red = -1, green = -1, blue = -1;

        if (argb.length() == 8) {
            alpha = Integer.parseInt(argb.substring(0, 2), 16);
            red = Integer.parseInt(argb.substring(2, 4), 16);
            green = Integer.parseInt(argb.substring(4, 6), 16);
            blue = Integer.parseInt(argb.substring(6, 8), 16);
        } else if (argb.length() == 6) {
            alpha = 255;
            red = Integer.parseInt(argb.substring(0, 2), 16);
            green = Integer.parseInt(argb.substring(2, 4), 16);
            blue = Integer.parseInt(argb.substring(4, 6), 16);
        }

        int[] components = { alpha, red, green, blue };

        return components;

    }

    private static String getTwoDigitHexString(int integer) {

        StringBuilder sb = new StringBuilder();
        sb.append(Integer.toHexString(integer));
        if (sb.length() < 2) {
            sb.insert(0, '0'); // pad with leading zero if needed
        }

        return sb.toString();

    }
}

Related Tutorials