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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: как лучше преобразовать массив в изображение?  (Прочитано 13952 раз)
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #15 : Сентябрь 04, 2015, 07:23 »

А в чем была разница тестового кода и боевого? Только размеры или отсутствовало заполнение тестового буфера?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3258


Просмотр профиля
« Ответ #16 : Сентябрь 04, 2015, 10:35 »

Зачем нужна палитра? Используйте QImage::Format_Grayscale8, это ровно то же самое - в имаге будут храниться те же значения, что и в палитровом имг (в диапазоне 0..255), только это будут сами значения, а не индексы на значения, внезапно равные индексу.
Записан
Sahsa
Гость
« Ответ #17 : Сентябрь 05, 2015, 15:05 »

А в чем была разница тестового кода и боевого? Только размеры или отсутствовало заполнение тестового буфера?

Разница только в размере. Может есть способ как-то сохранить большое разрешения или из нескольких склеить одно?
Записан
Sahsa
Гость
« Ответ #18 : Сентябрь 05, 2015, 15:09 »

Зачем нужна палитра? Используйте QImage::Format_Grayscale8, это ровно то же самое - в имаге будут храниться те же значения, что и в палитровом имг (в диапазоне 0..255), только это будут сами значения, а не индексы на значения, внезапно равные индексу.

Для быстродействия она нужна. Так как изображения большое, а каждый раз перерисовывать его, будет тратится время. А когда есть палитра, то она быстро меняет одну на другую.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #19 : Сентябрь 05, 2015, 15:37 »

Это порядка 700-800 столбцов и 1500 и больше строк. На каждую точку одно значения float.
Такое изображение уже не считалось "большим" лет эдак 20 назад (если не раньше)

А перерисовка изображения не будет в данном виде занимать много времени, так как при изменении палитры это происходит гораздо быстрее.
Опять как-то веет старьем/плесенью конца 80-x. Когда было аж 16 цветов каждый из которых мог выбираться. Тогда крутые парни переключали "регистры задвижки" (ясно напрямую в asm, через порты), и цвета менялись мгновенно - ну правда для всего экрана Улыбающийся Но как только появился true color - вся эта возня потеряла всякий смысл.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3258


Просмотр профиля
« Ответ #20 : Сентябрь 05, 2015, 17:32 »

Для быстродействия она нужна. Так как изображения большое, а каждый раз перерисовывать его, будет тратится время. А когда есть палитра, то она быстро меняет одну на другую.

Wat? Еще раз - для ЧБ изображения палитра не нужна, так как индекс == цвету в палитре. У вас массив размера 256 заполненный числами 0..255.
Или вы вводите меня в заблуждение и у вас не ЧБ изображение.
Записан
Sahsa
Гость
« Ответ #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 Offline

Сообщений: 3258


Просмотр профиля
« Ответ #22 : Сентябрь 06, 2015, 10:05 »

Приложите стек трейс внутрях Qt
Записан
Sahsa
Гость
« Ответ #23 : Сентябрь 06, 2015, 23:03 »

Не знаю что, но код хорошо работает у меня на VS 2013, в Creator не запускал, но скорее это проблемы программы или windows 10)))
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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