gpt4 book ai didi

java - java中的RGB图像过滤器

转载 作者:行者123 更新时间:2023-12-02 03:20:38 25 4
gpt4 key购买 nike

我希望我的照片看起来像这样:

enter image description here

我想通过按按钮来过滤图像。
目前,我有一个 BufferedImage,但我不知道如何设置像素。

这会将我的图片转换为蓝色图片,但我不知道为什么以及如何设置绿色和红色?

        int width = img.getWidth();
int height = img.getHeight();

for(int y = 0; y < height; y++){
for(int x = 0; x < width; x++){
int p = img.getRGB(x,y);

int r = (p>>16)&0xff;
int g = (p>>8)&0xff;
int b = p & 0xff;

img.setRGB(x,y,r);
}
}
this.lblFilteredImage.setIcon(new ImageIcon(img));

最佳答案

获得单独的彩色图像的一种方法是将其他颜色归零。

RGB Display

此 GUI 模型类通过更改掩码位从原始图像生成红色、绿色和蓝色图像。

package com.ggl.rgbdisplay.model;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;

public class RGBDisplayModel {

private BufferedImage originalImage;
private BufferedImage redImage;
private BufferedImage greenImage;
private BufferedImage blueImage;

public BufferedImage getOriginalImage() {
return originalImage;
}

public void setOriginalImage(BufferedImage originalImage) {
this.originalImage = originalImage;
this.redImage = createColorImage(originalImage, 0xFFFF0000);
this.greenImage = createColorImage(originalImage, 0xFF00FF00);
this.blueImage = createColorImage(originalImage, 0xFF0000FF);
}

public BufferedImage getRedImage() {
return redImage;
}

public BufferedImage getGreenImage() {
return greenImage;
}

public BufferedImage getBlueImage() {
return blueImage;
}

public static BufferedImage createTestImage() {
BufferedImage bufferedImage = new BufferedImage(200, 200,
BufferedImage.TYPE_INT_ARGB);
Graphics g = bufferedImage.getGraphics();

for (int y = 0; y < bufferedImage.getHeight(); y += 20) {
if (y % 40 == 0) {
g.setColor(Color.WHITE);
} else {
g.setColor(Color.BLACK);
}
g.fillRect(0, y, bufferedImage.getWidth(), 20);
}

g.dispose();
return bufferedImage;
}

private BufferedImage createColorImage(BufferedImage originalImage, int mask) {
BufferedImage colorImage = new BufferedImage(originalImage.getWidth(),
originalImage.getHeight(), originalImage.getType());

for (int x = 0; x < originalImage.getWidth(); x++) {
for (int y = 0; y < originalImage.getHeight(); y++) {
int pixel = originalImage.getRGB(x, y) & mask;
colorImage.setRGB(x, y, pixel);
}
}

return colorImage;
}

}

关于java - java中的RGB图像过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39667665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com