Russian Qt Forum

Qt => Мультимедиа => Тема начата: carrygun от Апрель 10, 2017, 11:51



Название: QPixmap из QByteArray и обратно
Отправлено: carrygun от Апрель 10, 2017, 11:51
Всем привет. Заранее извиняюсь, если ошибся с разделом.

Есть не большая проблема и вот в чем ее суть.
Есть у меня некоторые файлики "ресурсов", в которых разные данные идут слоями, в том числе и картинки. Грубо говоря это выглядит так: идет строка (допустим "image"), далее int - размер картинки в байтах, ну  сама картинка в байтах.

Достаю я картинку следующим образом:
Код:
m_image.loadFromData(ba, "PNG");
На форме картинка показывается правильно. Сую ее просто в QLabel. Далее я что-то меняю в других слоях файла, не трогая картинки и упаковываю в нужный формат.

Сохраняю картинку вот так:
Код:
    QByteArray ret;
    QBuffer buf(&ret);
    if (!buf.open(QIODevice::WriteOnly))
        return ret;
    p.save(&buf, "PNG");
    buf.close();
    return ret;

Все вроде как хорошо, но картинка бьется. Банально байтмассивы не совпадают. Да и потом с файлом возятся в Java и делают следующее: загоняют тот же байтмассив в BufferedImage, а потом делают это (https://docs.oracle.com/javase/7/docs/api/java/awt/image/BufferedImage.html#getRaster()) и это (https://docs.oracle.com/javase/7/docs/api/java/awt/image/Raster.html#getNumBands()) и жалуются что numBands != 1.

Если кто-то лучше в этом шарит, подскажите пожалуйста, что я делаю не так? Заранее спасибо.


Название: Re: QPixmap из QByteArray и обратно
Отправлено: Apktyc от Апрель 10, 2017, 12:00
А Ваше приложение открывает измененное изображение?
Может быть меняется формат исходного и сохраненного (было 24-х битное, стало 32).


Название: Re: QPixmap из QByteArray и обратно
Отправлено: carrygun от Апрель 10, 2017, 12:05
А Ваше приложение открывает измененное изображение?
Может быть меняется формат исходного и сохраненного (было 24-х битное, стало 32).

Да, в моем приложении я могу его просматривать после пересохранения ресурса. Никаких проблем нет. Более того, изначальный формат изображения и "пересохраненный" полностью совпадают.


Название: Re: QPixmap из QByteArray и обратно
Отправлено: Apktyc от Апрель 10, 2017, 13:29
А не может быть такого, что при обработке в Java меняют формат?

Просто, Вы при сохранении формат не меняете, а на той стороне, он уже другой, что несколько странно.