Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;

import javax.imageio.ImageIO;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
        Graphics2D g = img.createGraphics();
        g.setColor(Color.white);
        g.fillRect(0, 0, 20, 20);
        g.setColor(Color.black);
        g.fillRect(5, 5, 10, 10);

        Color[] mapping = new Color[] { Color.black, Color.white, // replace black with white 
                Color.white, Color.green // and white with green
        };

        ImageIO.write(img, "png", new File("original.png"));
        swapColors(img, mapping);
        ImageIO.write(img, "png", new File("swapped.png"));
    }

    public static void swapColors(BufferedImage img, Color... mapping) {
        int[] pixels = img.getRGB(0, 0, img.getWidth(), img.getHeight(), null, 0, img.getWidth());
        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
        for (int i = 0; i < mapping.length / 2; i++) {
            map.put(mapping[2 * i].getRGB(), mapping[2 * i + 1].getRGB());
        }
        for (int i = 0; i < pixels.length; i++) {
            if (map.containsKey(pixels[i]))
                pixels[i] = map.get(pixels[i]);
        }

        img.setRGB(0, 0, img.getWidth(), img.getHeight(), pixels, 0, img.getWidth());
    }
}