BufferedImage setRGB:图像被压缩到四分之一大小
BufferedImage setRGB: Image gets squished down to quarter size
我有一个 rgb 值的一维整数数组,我需要将其提供给 BufferedImage,然后使用它来生成 jpeg。我有 128*128 像素,我正在使用 setrgb 跳过它(我尝试一次性将缓冲图像传递给数组,运行 遇到麻烦,好吧,这是一个单独的问题)
int numRows = 128;
int numCols = 128;
int inputIndex = 0;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for(int row = 0; row < numRows; row++){
for(int col = 0; col < numCols; col ++){
int rgb = rgbvals[inputIndex++];
rgb = (rgb << 8) + rgbvals[inputIndex++];
rgb = (rgb << 8) + rgbvals[inputIndex++];
image.setRGB(col,row, rgb);
}
}
File outputFile = new File("output.jpg");
ImageIO.write(image, "JPEG", outputFile);
这看起来很简单,但我的图像看起来像这样:
128*128 picture of an eye, except it takes up 1/4 the space it needs and the rest of the image is black
我觉得我可能忽略了一个小细节。如果有任何见解,我将不胜感激!
这实际上是一个愚蠢的错误,我只需要正确调用带有 numRows 和 numCols 的 BufferedImage 构造函数,而不是我使用的其他变量(宽度,高度指的是其他东西)。
这修复了它。
我有一个 rgb 值的一维整数数组,我需要将其提供给 BufferedImage,然后使用它来生成 jpeg。我有 128*128 像素,我正在使用 setrgb 跳过它(我尝试一次性将缓冲图像传递给数组,运行 遇到麻烦,好吧,这是一个单独的问题)
int numRows = 128;
int numCols = 128;
int inputIndex = 0;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for(int row = 0; row < numRows; row++){
for(int col = 0; col < numCols; col ++){
int rgb = rgbvals[inputIndex++];
rgb = (rgb << 8) + rgbvals[inputIndex++];
rgb = (rgb << 8) + rgbvals[inputIndex++];
image.setRGB(col,row, rgb);
}
}
File outputFile = new File("output.jpg");
ImageIO.write(image, "JPEG", outputFile);
这看起来很简单,但我的图像看起来像这样: 128*128 picture of an eye, except it takes up 1/4 the space it needs and the rest of the image is black
我觉得我可能忽略了一个小细节。如果有任何见解,我将不胜感激!
这实际上是一个愚蠢的错误,我只需要正确调用带有 numRows 和 numCols 的 BufferedImage 构造函数,而不是我使用的其他变量(宽度,高度指的是其他东西)。
这修复了它。