android - конвертировать растровое изображение в матричный массив - PullRequest
0 голосов
/ 02 мая 2020

У меня есть код 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();

Так, что является лучшим способом? В любом случае, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...