Название: QImageReader Отправлено: deefox от Январь 27, 2017, 09:45 Доброго времени суток, прошу у вас совета.
Используя пример, из книги Андрея Боровского, написал проект чтения изображения больших размеров. Проблема заключается в том, что изображения считывается методом read() по нарастающей и очень долго. Здесь я создаю массив, состоящий и классов с фрагментами. Код:
далее сам метод с чтением и сохранением в память фрагмента Код: void ImageFrag::load(QIODevice *ioDevice, const int w, int h) и так получается что у нас картинка размерами 9000x9000, сторона фрагмента 1000x1000 Division = 9, так вот получается, что время чтения возрастает эквивалентно возрастанию j в цикле. в чем может быть проблема? Название: Re: QImageReader Отправлено: GreatSnake от Январь 27, 2017, 10:48 в чем может быть проблема? Может потому чтоКод в j-м цикле? Название: Re: QImageReader Отправлено: deefox от Январь 27, 2017, 10:55 в чем может быть проблема? Может потому чтоКод в j-м цикле? я постоянно выделаю под новый элемент, запускаю в нем функцию load и потом помещаю его в QList, потом выделяю под новый элемент и т.д. или вы что то другое имеете ввиду? засек выполнение функции load результат: 203 230 329 422 514 609 718 797 889 141 249 344 436 515 624 719 811 893 вынес из цикла, все осталось так же Код: ImageFrag imgf[81]; Название: Re: QImageReader Отправлено: Igors от Январь 28, 2017, 11:42 Есть простой дедовский способ: загрузить имедж целиком, и из него нарезать имеджи/фрагменты. Минус - (слишком) большой имедж в память не влезет. Только если это актуально придется связываться с чтением по частям. Тут дело темное, какие-то форматы могут читать имедж "начиная с N-ной строки", другие нет. Не исключено что Вы хотели прочитать кусок, а в действительности читается все и потом отдается нужный кусок - вот и тормоза. Во всяком случае "по столбцам" точно никто не умеет. Поэтому я бы делал так
- читать N (полных) строк, из этого "большого куска" уже нарезать 9 фрагментов по столбцам - читать следующие N строк и.т.д Edit: да, ну и конечно попробовать все делать с одним QImageReader не создавая его для каждого куска а лишь меняя clipRect |