Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > QImage - чтение из массива


Автор: AxNe0 7.11.2012, 20:41
Доброго времени суток, коллеги,

Был бы очень признателен, если бы помогли справиться со следующей проблемой. Есть 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);


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

Автор: AxNe0 7.11.2012, 21:00
пока получилось сделать попиксельной установкой значений:
Код

    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));
        }
    }


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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)