Russian Qt Forum
Ноябрь 22, 2024, 18:36
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
как лучше преобразовать массив в изображение?
Страниц:
1
[
2
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: как лучше преобразовать массив в изображение? (Прочитано 14479 раз)
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: как лучше преобразовать массив в изображение?
«
Ответ #15 :
Сентябрь 04, 2015, 07:23 »
А в чем была разница тестового кода и боевого? Только размеры или отсутствовало заполнение тестового буфера?
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: как лучше преобразовать массив в изображение?
«
Ответ #16 :
Сентябрь 04, 2015, 10:35 »
Зачем нужна палитра? Используйте QImage::Format_Grayscale8, это ровно то же самое - в имаге будут храниться те же значения, что и в палитровом имг (в диапазоне 0..255), только это будут сами значения, а не индексы на значения,
внезапно
равные индексу.
Записан
Sahsa
Гость
Re: как лучше преобразовать массив в изображение?
«
Ответ #17 :
Сентябрь 05, 2015, 15:05 »
Цитата: Old от Сентябрь 04, 2015, 07:23
А в чем была разница тестового кода и боевого? Только размеры или отсутствовало заполнение тестового буфера?
Разница только в размере. Может есть способ как-то сохранить большое разрешения или из нескольких склеить одно?
Записан
Sahsa
Гость
Re: как лучше преобразовать массив в изображение?
«
Ответ #18 :
Сентябрь 05, 2015, 15:09 »
Цитата: Авварон от Сентябрь 04, 2015, 10:35
Зачем нужна палитра? Используйте QImage::Format_Grayscale8, это ровно то же самое - в имаге будут храниться те же значения, что и в палитровом имг (в диапазоне 0..255), только это будут сами значения, а не индексы на значения,
внезапно
равные индексу.
Для быстродействия она нужна. Так как изображения большое, а каждый раз перерисовывать его, будет тратится время. А когда есть палитра, то она быстро меняет одну на другую.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: как лучше преобразовать массив в изображение?
«
Ответ #19 :
Сентябрь 05, 2015, 15:37 »
Цитата: Sahsa от Сентябрь 03, 2015, 15:06
Это порядка 700-800 столбцов и 1500 и больше строк. На каждую точку одно значения float.
Такое изображение уже не считалось "большим" лет эдак 20 назад (если не раньше)
Цитата: Sahsa от Сентябрь 03, 2015, 15:06
А перерисовка изображения не будет в данном виде занимать много времени, так как при изменении палитры это происходит гораздо быстрее.
Опять как-то веет старьем/плесенью конца 80-x. Когда было аж 16 цветов каждый из которых мог выбираться. Тогда крутые парни переключали "регистры задвижки" (ясно напрямую в asm, через порты), и цвета менялись мгновенно - ну правда для всего экрана
Но как только появился true color - вся эта возня потеряла всякий смысл.
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: как лучше преобразовать массив в изображение?
«
Ответ #20 :
Сентябрь 05, 2015, 17:32 »
Цитата: Sahsa от Сентябрь 05, 2015, 15:09
Для быстродействия она нужна. Так как изображения большое, а каждый раз перерисовывать его, будет тратится время. А когда есть палитра, то она быстро меняет одну на другую.
Wat? Еще раз - для ЧБ изображения палитра не нужна, так как индекс == цвету в палитре. У вас массив размера 256 заполненный числами 0..255.
Или вы вводите меня в заблуждение и у вас не ЧБ изображение.
Записан
Sahsa
Гость
Re: как лучше преобразовать массив в изображение?
«
Ответ #21 :
Сентябрь 05, 2015, 23:06 »
И так немного потестив, то проблема все же не в размере, а в самом массиве.
Массив задается следующим образам.
uchar *im;
int sizeImg = m_iDiscreteCount * m_iTraceCount;
im = new uchar [sizeImg];
и заполняется затем значениями. После этого создается изображения.
QImage img(im, m_iTraceCount, m_iDiscreteCount, QImage::Format_Indexed8);
QVector<QRgb> palette;
for (int i = 0; i < 256; i++)
palette.append(qRgb(i, i / 4, 255 - i));
img.setColorTable(palette);
img.save("test.jpg", "JPG"); <--- вот тут и вылетает.
Самое странно, что когда массив маленький, то работает. В чем проблема может быть?
«
Последнее редактирование: Сентябрь 05, 2015, 23:08 от Sahsa
»
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: как лучше преобразовать массив в изображение?
«
Ответ #22 :
Сентябрь 06, 2015, 10:05 »
Приложите стек трейс внутрях Qt
Записан
Sahsa
Гость
Re: как лучше преобразовать массив в изображение?
«
Ответ #23 :
Сентябрь 06, 2015, 23:03 »
Не знаю что, но код хорошо работает у меня на VS 2013, в Creator не запускал, но скорее это проблемы программы или windows 10)))
Записан
Страниц:
1
[
2
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...