[英]How to get integer array from byte array in java and print the output array? Byte array is from a grayscale image of 225*225 dimension
在这里,我将字节数组data[]
类型转换为int
。 但是在arr[i]
获取正整数和负整数值作为输出数组。 但是像素值应该是正数吧? 对于灰度(0 到 255),我想我转换的方式不对。 任何人都可以建议一些代码将我的字节数组data[]
转换为整数一维数组arr[]
吗?
public class Imagemat {
public static void main(String[] args) throws Exception {
//*************convert byte array*************//
BufferedImage bImage = ImageIO.read(new File("image path"));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ImageIO.write(bImage, "jpg", bos);
byte[] data = bos.toByteArray(); //byte array data[]
//*****convert to integer array *****//
int[] arr = new int[data.length];
for(int i = 0; i < data.length; i++) {
arr[i] = (int)data[i];
}
for(int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " "); //integer array arr[i]
System.out.println();
}
}
}
获得输出如:
-1 -40 -1 -32 0 16 74 70 73 70 0 1 2 0 0 1 0 1 0 0 -1 -37 0 67 0 8 6 6 7
6 5 8 7 7 7 9 9 8 10 12 20 13 12 11 11 1........
我不确定 JPG 图像是如何以字节存储的,但是要将无符号字节转换为int
您可以使用Byte.toUnsignedInt(byte x)
来获取Byte.toUnsignedInt(byte x)
的无符号值。 (此函数仅返回((int) x) & 0xff
以便您可以根据需要使用它)
例子:
int[] arr = new int[data.length];
for(int i = 0; i < data.length; i++) {
arr[i] = Byte.toUnsignedInt(data[i]);
}
for(int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " "); //integer array arr[i]
System.out.println();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.