我想像这样看我的照片:
我想按一个按钮过滤图像。
目前,我有一个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));
获得单独的彩色图像的一种方法是将其他颜色归零。
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;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句