So ersetzen Sie Farbe durch eine andere Farbe in BufferedImage

So habe ich eine Bilddatei, auf der sich ein Vulkan befindet. Alles andere ist 0xFFFF00FF (undurchsichtiges Magenta). Ich möchte jedes Pixel, das diese Farbe enthält, durch 0 (transparent) ersetzen. Bisher sieht meine Methode so aus:

public static BufferedImage replace(BufferedImage image, int target, int preferred) {
    int width = image.getWidth();
    int height = image.getHeight();
    BufferedImage newImage = new BufferedImage(width, height, image.getType());
    int color;

    for (int i = 0; i < width; i++) {
        for (int j = 0; j < height; j++) {
            color = image.getRGB(i, j);
            if (color == target) {
                newImage.setRGB(i, j, preferred);
            }
            else {
                newImage.setRGB(i, j, color);
            }
        }
    }

    return newImage;
}

Dies funktioniert gut, scheint aber sehr langsam. Ich habe jemanden gesehen, der das anders macht, aber ich habe keine Ahnung, was los war. Wenn jemand einen besseren Weg kennt, würde ich ihn gerne hören.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage