gpt4 book ai didi

java - 图像正在横向绘制到屏幕(Java BufferedImage、WritableRaster)

转载 作者:行者123 更新时间:2023-12-01 11:40:44 25 4
gpt4 key购买 nike

我的代码绘制图像不正确。每次我尝试猜测问题所在并修复它时,都会收到 arrayOutOfBounds 异常。所有的阵列业务都让我困惑。我只是真的需要一些帮助。谢谢!

(顺便说一句,我确实需要提取像素值并存储它们,以便我可以手动对数据进行模糊、锐化和其他类型的方法。我正在学习图像处理的工作原理。)

这段代码给出了这个结果(图像应该是正面朝上的,但它是侧面的):

enter image description here

这是原图:

enter image description here

Image.java:

package mycode;

import java.awt.image.BufferedImage;
import java.awt.image.WritableRaster;

public class Image {

public int height;
public int width;
public int image[][];

public Image(BufferedImage openImage)
{
height = openImage.getHeight();
width = openImage.getWidth();

image = new int[openImage.getWidth()][openImage.getHeight()];
for(int x = 0; x < openImage.getWidth(); x++)
{
for(int y = 0; y < openImage.getHeight(); y++)
{
image[x][y] = 0xff & openImage.getRGB(x, y);
Debug.print(""+Integer.toHexString(image[x][y]));
}
}

}
}

刷新 View ():(model.image 是上面 Image 类的实例。)

@Override
public void refreshView(Graphics2D g2d)
{
//Draw the background image.
if(ControllerState.inImageMode && model.image != null)
{
Debug.print("Drawing background image");
BufferedImage bufferedImage = new BufferedImage(model.image.width, model.image.height,
BufferedImage.TYPE_BYTE_GRAY);
WritableRaster wr = bufferedImage.getRaster();

for(int x = 0; x < model.image.width; x++)
{
for(int y = 0; y < model.image.height; y++)
{
wr.setPixels(0, x, model.image.width, 1, model.image.image[x]);
}
}
g2d.drawImage(bufferedImage, null, 0, 0);
}
}

最佳答案

您似乎遇到了经典的 x-y 行列混合问题。我认为你想要的 for 循环内部:

wr.setPixels(x, 0, 1, model.image.height, model.image.image[x]);

关于java - 图像正在横向绘制到屏幕(Java BufferedImage、WritableRaster),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29549427/

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