Какова лучшая альтернатива Bitmap.getPixels в java -native? - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть android приложение, встроенное в java, которое преобразует растровое изображение в двоичное (с добавлением некоторых двоичных заголовков).

Я хотел бы преобразовать этот класс в java родное приложение (чтобы запустить его на моем рабочем столе или в лямбда-функции) хорошая альтернатива для java -одного, я пытался использовать ImageJ, но я столкнулся со следующей проблемой:

Приложение android получает изображение bmp; все работает хорошо

Нормальное приложение java получает такое же изображение bmp ; Я всегда получаю ошибку ArrayOutOfBounds для переменной int iArr. Мне не нужно было увеличивать размер int[], и я не могу понять, почему размер отличается.

Я попытался увеличить размер, но затем двоичные заголовки и разделители добавились к двоичное изображение не в той же позиции, и двоичное изображение повреждено.

Android код:

import android.graphics.Bitmap;

class BmpUtil {
    public byte[] saveRGB(BufferedImage bitmap, String str) throws IOException {
        int width = bitmap.getWidth();
        int height = bitmap.getHeight();
        int[] iArr = new int[(width * height)];
        int length = iArr.length * 3;
        bitmap.getPixels(iArr, 0, width, 0, 0, width, height);

        ByteBuffer allocate = ByteBuffer.allocate(length);
        //..
    }
}

Мой код:

import java.awt.image.BufferedImage;

class BmpUtil {
    public byte[] saveRGB(BufferedImage bitmap, String str) throws IOException {
        int width = bitmap.getWidth();
        int height = bitmap.getHeight();
        int[] iArr = new int[(width * height)];
        int length = iArr.length * 3;
        bitmap.getRaster().getPixels(0, 0, width, height, iArr);
        //bitmap.getData().getPixels(0, 0, width, height, iArr);

        ByteBuffer allocate = ByteBuffer.allocate(length);
        //..
    }
}

Есть Есть ли способ получить подобную функцию, возвращающую пиксели в java нормально? Я использую правильный класс?

Заранее спасибо!

...