конвертировать BufferedImage в байтовый массив JPG - PullRequest
1 голос
/ 21 сентября 2019

Я работаю на платформе обработки изображений, и мой сервер в настоящее время принимает изображения в виде байтовых массивов от клиента, используя методы pythons PIL.Image.В настоящее время я также использую Java в качестве внешнего интерфейса для захвата кадров изображения из видео с помощью утилиты FrameGrab и возврата их в виде объекта BufferedImage.Что я не понимаю, так это то, как я должен преобразовать этот буферизованный объект изображения в байтовый массив jpg и использовать некоторую помощь. '

Я нашел пример написания

Вот базовая часть моего кода.

            BufferedImage frame;

            for (int i = 1; i < 100; i++) { 
                try {
                    frame = AWTUtil.toBufferedImage(FrameGrab.getFrameAtSec(videoFile, i * .3));


                } catch (IOException ex) {
                    Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
                } catch (JCodecException ex) {
                    Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
                }
            }

Мой сервер Python в настоящее время просто пытается сохранить файл с вышеупомянутой библиотекой, например:

        img = Image.open(io.BytesIO(data))
        img.save('test.jpg')

1 Ответ

1 голос
/ 21 сентября 2019

Простой способ:

public static byte[] toJpegBytes(BufferedImage image) throws IOException {
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  ImageIO.write(image, "jpeg", baos);
  return baos.toByteArray();
}

Если вы хотите больше контроля над преобразованием (уровень сжатия и т. Д.), См. Настройка уровня сжатия jpg с ImageIO в Java .

...