我有一个存储为byte []数组的图像,我想在将字节写入其他地方的磁盘之前垂直翻转图像。
图像字节来自压缩的jp2图像文件。我已经研究过像Flip image stored as a byte[] array这样的实现,但是我没有在android中工作,也没有访问BitmapFactory。我还考虑首先将字节数组转换为BufferedImage,然后翻转它,但是在当前上下文中不知道图像的高度和宽度(编辑:我修改了代码,因此高度和宽度都是现在已知)。
有没有办法通过严格的数组操作来做到这一点?
编辑:尝试翻转代码
public static byte[] flip(byte[] imageBytes) {
//separate out the sub arrays
byte[] holder = new byte[imageBytes.length];
byte[] subArray = new byte[dimWidth];//dimWidth is the image width, or number of matrix columns
int subCount = 0;
for (int i = 0; i < imageBytes.length; i++) {
subArray[subCount] = imageBytes[i];
subCount++;
if (i% dimWidth == 0) {
subArray = reverse(subArray);
if (i == (dimWidth)) {
holder = subArray;
} else {
holder = concat(holder, subArray);
}
subCount = 0;
subArray = new byte[dimWidth];
}
}
subArray = new byte[dimWidth];
System.arraycopy(imageBytes, imageBytes.length - dimWidth, subArray, 0, subArray.length);
holder = concat(holder, subArray);
imageBytes = holder;
return imageBytes;
}
答案 0 :(得分:1)
没关系,我让它运转起来。我只需要在将它们交错到最终数组之前翻转高低字节。对于任何与我有同样问题的人,在交错之前,分别在高字节和低字节数组上使用上述翻转函数。
感谢您的帮助!
答案 1 :(得分:0)
我还研究过将字节数组转换为
BufferedImage
首先,然后翻转它,但图像的高度和宽度不是 在当前背景下已知。
你可以检查身高和身高。宽度直接来自 JP2 文件字节的标题部分。
getIntent()