Декодирование с помощью Qt изображения, закодированного с помощью класса Java ImageIO

0

Я хочу отобразить изображение с помощью C++, точнее используя Qt Framework. Изображение было закодировано с использованием метода ImageIO.write таким образом:

          BufferedImage originalImage = ImageIO.read(new File("c:\\image.jpg"));
          // convert BufferedImage to byte array
          ByteArrayOutputStream baos = new ByteArrayOutputStream();
          ImageIO.write(originalImage, "jpg", baos);
          baos.flush();
          imageInByte = baos.toByteArray();
          baos.close();

Затем содержимое ByteArrayOutputStream просто выгружается в файл image.out, и это файл, который мне нужно преобразовать обратно в изображение, но используя C++. Я вижу, что размер файла image.jpg больше размера файла image.out, поэтому Java должен сделать некоторое сжатие или кодировку, которые я не знаю. Поэтому я не могу просто прочитать изображение как JPG и поместить его в объект QImage или QPixmap.

Кто-нибудь знает, как класс ImageIO кодирует изображение?

  • 0
    Вы пытались просто прочитать это с помощью Qt?
  • 0
    Нет, я не Я просто попытался открыть его с помощью GIMP и средства просмотра изображений Windows, и оба не удалось. Я думаю, что Qt ожидает изображение в формате jpg, а не этот тип кодирования.
Показать ещё 5 комментариев
Теги:
qt
javax.imageio

1 ответ

0

Кто-нибудь знает, как класс ImageIO кодирует изображение?

Лучший выбор - это, вероятно, прочитать Руководство по API ввода-вывода Java Image от Oracle.

В нем описываются основы и механизм плагина, используемые для записи. Вы хотите прочитать хотя бы раздел 3 (и особенно 3.4 о ImageWriter) и, возможно, 4.1 для ознакомления с концепцией плагина.

Подробнее о том, как управлять настройками записи в формате JPEG, см. В документе JPImageWriteParam API.

PS: Ваш код выглядит нормально, и должен предоставить допустимый JPEG, если плагин ReaderIO Reader может прочитать ваш исходный файл (com.sun.imageio.plugins.JPEGImageReader очень ограничительный в отношении нестандартных файлов, даже если большинство другое программное обеспечение счастливо читает их).

PPS: стандартный плагин для создания изображений ImageIO JPEG (com.sun.imageio.plugins.JPEGImageWriter) использует библиотеку Independent JPEG Group (IJG) JPEG для записи своего потока JPEG. Я не думаю, что вы можете получить гораздо больше "стандартных", чем это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню