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

Я хочу отобразить изображение, используя 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, и это файл, который мне нужно преобразовать обратно в Image, но с использованием C ++.
Я вижу, что размер файла image.jpg больше, чем размер файла image.out, поэтому Java должна выполнить сжатие или кодировку, которых я не знаю. Поэтому я не могу просто прочитать изображение в формате JPG и поместить его в объект QImage или QPixmap.

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

0

Решение

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

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

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

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

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]