У меня есть код MATLAB, который конвертирует изображение в матричный массив. Затем он использует операцию чтения зигзага в процессе преобразования из многомерного массива в одномерный массив. Псевдокод (MATLAB):
array[M][N]=read_image(Image)
array[1][MN]=zigzag(array[M][N])
Я думаю, что могу использовать приведенный ниже код в JAVA для преобразования битовой карты в байтовый массив.
// convert from bitmap to byte array
public byte[] getBytesFromBitmap(Bitmap bitmap) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG, 70, stream);
return stream.toByteArray();
}
Но я не уверен , Значит, этот путь равен коду MATLAB или я должен использовать другой способ?
Редактировать: Я также нашел это:
public int[][] getMatrixOfImage(BufferedImage bufferedImage) {
int width = bufferedImage.getWidth(null);
int height = bufferedImage.getHeight(null);
int[][] pixels = new int[width][height];
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
pixels[i][j] = bufferedImage.getRGB(i, j);
}
}
return pixels;
}
и также нашел это:
width = bitmap.getWidth();
height = bitmap.getHeight();
int size = bitmap.getRowBytes() * bitmap.getHeight();
ByteBuffer byteBuffer = ByteBuffer.allocate(size);
bitmap.copyPixelsToBuffer(byteBuffer);
byteArray = byteBuffer.array();
Так, что является лучшим способом? В любом случае, спасибо.