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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: проблема с сохранением 8-битного JPEG  (Прочитано 3516 раз)
alexey11111
Гость
« : Март 09, 2012, 15:33 »

Добрый день!
Есть 8-битное 256-grayscale изображение, получаемое с некоторого USB-устройства. Яркости пикселей этого изображения хранятся в матрице Img размером Width*Height.

Создаю новое изображение QImage:
Код:
QImage Picture = QImage((const unsigned char*)(Img),
                                 Width, Height, QImage::Format_Indexed8);


Далее конвертирую PIcture в QPixmap и сохраняю полученную картинку в JPEG файл:
Код:
QPixmap  SPicture =  QPixmap::fromImage(Picture);
SPicture.save("PICTURE.jpeg");

Все работает, в сохраненном файле получается требуемая серая картинка. Но есть одна проблема - изображение сохраняется с глубиной цвета 24 бит, а нужно 8 бит.

Пробовал сохранять в jpeg файл QImage без конвертации в QPixmap:
Код:
Picture.save("PICTURE.jpeg");
Изображение сохраняется в 8 битке, но вместо картинки получается черное пятно на светлом фоне.
Подскажите, что делать?
Заранее спасибо.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Март 09, 2012, 19:58 »

Насколько мне известно, jpeg всегда 24-битный. По-моему, можно задавать 8-битные палитры в gif и png. Поправьте, если я ошибаюсь.
Нет, grayscale поддерживается (во всяком случае самой libJPG).
Записан
sudo
Гость
« Ответ #2 : Март 11, 2012, 10:11 »

QImage QImage::convertToFormat ( Format format, Qt::ImageConversionFlags flags = Qt::AutoColor ) const

QImage::Format_Indexed8   3   The image is stored using 8-bit indexes into a colormap.

bool QImage::save ( const QString & fileName, const char * format = 0, int quality = -1 ) const
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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