如何将javafx.scene.image.Image转换为bgra格式的字节数组?

我试着做:

PixelReader pixelReader = img.getPixelReader();
int width = (int)img.getWidth();
int height = (int)img.getHeight();
byte[] buffer = new byte[width * height * 4];
pixelReader.getPixels(
        0,
        0,
        width,
        height,
        PixelFormat.getByteBgraInstance(),
        buffer,
        0,
        width
);

但是它没有用,我的byte []数组缓冲区仍然充满零。

最佳答案

scanlineStride i。 e。宽度必须乘以4,即。 e。

PixelReader pixelReader = img.getPixelReader();
int width = (int)img.getWidth();
int height = (int)img.getHeight();
byte[] buffer = new byte[width * height * 4];
pixelReader.getPixels(
        0,
        0,
        width,
        height,
        PixelFormat.getByteBgraInstance(),
        buffer,
        0,
        width * 4
);

10-02 06:16