gpt4 book ai didi

java - 写灰度图出错

转载 作者:行者123 更新时间:2023-11-30 08:50:31 24 4
gpt4 key购买 nike

在下面的代码中,我尝试读取灰度图像,将像素值存储在二维数组中,然后用不同的名称重写图像。代码是

    package dct;

import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;
import java.awt.image.Raster;
import java.io.File;
import javax.imageio.ImageIO;

public class writeGrayScale
{

public static void main(String[] args)
{
File file = new File("lightning.jpg");
BufferedImage img = null;
try
{
img = ImageIO.read(file);
}
catch(Exception e)
{
e.printStackTrace();
}

int width = img.getWidth();
int height = img.getHeight();
int[][] arr = new int[width][height];

Raster raster = img.getData();

for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
arr[i][j] = raster.getSample(i, j, 0);
}
}

BufferedImage image = new BufferedImage(256, 256, BufferedImage.TYPE_BYTE_GRAY);
byte[] raster1 = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
System.arraycopy(arr,0,raster1,0,raster1.length);
//
BufferedImage image1 = image;
try
{
File ouptut = new File("grayscale.jpg");
ImageIO.write(image1, "jpg", ouptut);
}
catch(Exception e)
{
e.printStackTrace();
}
}// main
}// class

对于这段代码,错误是

Exception in thread "main" java.lang.ArrayStoreException
at java.lang.System.arraycopy(Native Method)
at dct.writeGrayScale.main(writeGrayScale.java:49)
Java Result: 1

如何消除这个写灰度图的错误?

最佳答案

我发现:“ArrayStoreException——如果 src 数组中的元素由于类型不匹配而无法存储到 dest 数组中。” http://www.tutorialspoint.com/java/lang/system_arraycopy.htm

两个想法:

  1. 您正在将一个整数数组复制到一个字节数组中。
  2. 这不属于异常(exception)情况,但尺寸是否正确? arr为二维数组,raster1为一维数组。

而且您不能只更改二维数组中的字节数组而忽略您正在调用的方法的输出。

关于java - 写灰度图出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30962211/

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