Russian Qt Forum
Ноябрь 25, 2024, 04:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QPixmap из QByteArray и обратно  (Прочитано 7145 раз)
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.

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

Сообщений: 133


Просмотр профиля
« Ответ #1 : Апрель 10, 2017, 12:00 »

А Ваше приложение открывает измененное изображение?
Может быть меняется формат исходного и сохраненного (было 24-х битное, стало 32).
« Последнее редактирование: Апрель 10, 2017, 12:02 от Apktyc » Записан
carrygun
Гость
« Ответ #2 : Апрель 10, 2017, 12:05 »

А Ваше приложение открывает измененное изображение?
Может быть меняется формат исходного и сохраненного (было 24-х битное, стало 32).

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

Сообщений: 133


Просмотр профиля
« Ответ #3 : Апрель 10, 2017, 13:29 »

А не может быть такого, что при обработке в Java меняют формат?

Просто, Вы при сохранении формат не меняете, а на той стороне, он уже другой, что несколько странно.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 23.