Поиск:

Ответ в темуСоздание новой темы Создание опроса
> QImage - чтение из массива 
V
    Опции темы
AxNe0
Дата 7.11.2012, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 24.4.2006
Где: St. Petersburg

Репутация: нет
Всего: 5



Доброго времени суток, коллеги,

Был бы очень признателен, если бы помогли справиться со следующей проблемой. Есть 24-битное изображение в формате bmp, которое читается отдельным протестированным классом, заточенным под чтение/обработку/запись 24-битных bmp-изображений. Этот класс предоставляет доступ как к отдельному пикселю, так и к массиву всех пикселей данной функцией:
Код

const unsigned char* data() {
      return data_;
}


Прошло какое-то время и захотелось добавить к чудо-программе графический интерфейс на Qt и показывать изображения на форме. Для этой цели на форму добавляется QLabel в котором успешно рисуется QImage, который предварительно прочитал изображение из файла. А вот с загрузкой изображения из массива unsigned char ничего хорошего не получается. Этот код либо рисует изображение с неправильными цветами, а в случае небольших изображений, например, 70х70 отображается нечто невообразимое, совершенно не похожее на картинку.

Заодно вопрос, как можно сжать/растянуть изображение до размеров QLabel. Почему-то такое не помогает:
Код

QPixmap pixmap = QPixmap::fromImage(img);
pixmap.scaled(label.width(), label.height(), Qt::KeepAspectRatio);


Заранее спасибо за помощь и советы!


--------------------
SCJP 6, SCBCD 5, OCEWSD 6
blog
PM ICQ Skype   Вверх
AxNe0
Дата 7.11.2012, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 24.4.2006
Где: St. Petersburg

Репутация: нет
Всего: 5



пока получилось сделать попиксельной установкой значений:
Код

    qImg = QImage(img.data(), img.width(), img.height(), QImage::Format_RGB888);
    for (unsigned int y = 0; y < img.height(); y++) {
        for (unsigned int x = 0; x < img.width(); x++) {
            unsigned char r, g, b;
            img.get_pixel(x, y, r, g, b);
            qImg.setPixel(x, y, qRgb(r, g, b));
        }
    }




--------------------
SCJP 6, SCBCD 5, OCEWSD 6
blog
PM ICQ Skype   Вверх
AxNe0
Дата 8.11.2012, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 24.4.2006
Где: St. Petersburg

Репутация: нет
Всего: 5



проблема решилась, все из-за невнимательности - scaled возвращает масштабированный объект, не меняя исходный.

Это сообщение отредактировал(а) AxNe0 - 8.11.2012, 12:33


--------------------
SCJP 6, SCBCD 5, OCEWSD 6
blog
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1000 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.