gpt4 book ai didi

java.awt.image.BufferedImage.getRBG 不返回预期值

转载 作者:行者123 更新时间:2023-12-04 04:43:34 28 4
gpt4 key购买 nike

我正在尝试使用 BufferedImage.getRGB具有七个参数的方法来读取像素区域并获取它们的颜色。听起来很简单,但由于某种原因,它对我不起作用。这是一个简短的、自包含的、可编译的示例:

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

import javax.swing.JFrame;
import javax.swing.JPanel;

public class BufferedImageTest extends JPanel {
BufferedImage image;

public static void main(String[] args) {
BufferedImageTest mainClass = new BufferedImageTest();
mainClass.run();
}

private void run() {
initWindow();
// Create image:
image = new BufferedImage(5, 5, BufferedImage.TYPE_INT_RGB);
int[] red = new int[25];
for (int i = 0; i < 25; i++)
red[i] = Color.RED.getRGB();
image.setRGB(1, 0, 3, 5, red, 0, 0);

// Read image:
int[] rgbArray = new int[25];
int w = image.getWidth();
int h = image.getHeight();
image.getRGB(0, 0, w, h, rgbArray, 0, 0);
for (int i = 0; i < rgbArray.length; i++) {
Color c = new Color(rgbArray[i]);
System.out.print("(" + c.getRed() + "," + c.getGreen() + "," + c.getBlue() + ")");
if (i % 5 == 4)
System.out.println("");
}
}

@Override
public void paint(Graphics g) {
g.drawImage(image, 5, 5, null);
}

private void initWindow() {
JFrame frame = new JFrame();
frame.getContentPane().add(this);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(40, 60);
frame.setVisible(true);
}
}

在 run() 方法中,我首先创建了一个非常简单的 5 x 5 像素图像,如下所示:

example image

那没问题。然后我尝试读取该图像的像素,但这几乎根本不起作用。它只正确获取第一行像素,然后将其余像素显示为黑色。打印循环的输出是:
(0,0,0)(255,0,0)(255,0,0)(255,0,0)(0,0,0)
(0,0,0)(0,0,0)(0,0,0)(0,0,0)(0,0,0)
(0,0,0)(0,0,0)(0,0,0)(0,0,0)(0,0,0)
(0,0,0)(0,0,0)(0,0,0)(0,0,0)(0,0,0)
(0,0,0)(0,0,0)(0,0,0)(0,0,0)(0,0,0)

当我希望它完全像第一行时。我在这里缺少什么?我尝试从头开始编写它并在 getRGB 调用中使用“扫描线”和“偏移”参数,但似乎没有任何效果。我在 Windows 7 上运行 Java 7,如果这有什么不同的话。

最佳答案

指定正确的扫描大小以获取所有行:

image.getRGB(0, 0, w, h, rgbArray, 0, w);

看这里: BufferedImage#setRGB()BufferedImage#getRGB()

关于java.awt.image.BufferedImage.getRBG 不返回预期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18550635/

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