Доброго времени суток, прошу у вас совета.
Используя пример, из книги Андрея Боровского, написал проект чтения изображения больших размеров.
Проблема заключается в том, что изображения считывается методом read() по нарастающей и очень долго.
Здесь я создаю массив, состоящий и классов с фрагментами.
/*Читаем файл*/
file.setFileName("bigimg.jpg");
file.open(QIODevice::ReadOnly);
/*Сохраняем изображение в буфере*/
QByteArray ba = file.readAll();
QBuffer io(&ba);
file.close();
/*Открываем и считываем с помощью метода ImageReqader*/
io.open(QIODevice::ReadOnly);
/*загружаем картинку в фрагменты, где i - по ширине, j - по высоте*/
for (int i = 0; i < Division; ++i) {
for (int j = 0; j < Division; ++j) {
imgf = new ImageFrag();
imgf->load(&io, i,j);
listFrag.append(imgf);
}
}
далее сам метод с чтением и сохранением в память фрагмента
void ImageFrag::load(QIODevice *ioDevice, const int w, int h)
{
io = ioDevice;
io->reset();
QImageReader ir(io);
ir.setClipRect(QRect(sizeF*w,sizeF * h,sizeF,sizeF));
QImage img = ir.read();
QIODevice *chankIntf = new QBuffer(chank,this);
chankIntf->open(QIODevice::WriteOnly);
img.save(chankIntf,"PNG");
delete chankIntf;
}
и так получается что у нас картинка размерами 9000x9000, сторона фрагмента 1000x1000 Division = 9, так вот получается, что время чтения возрастает эквивалентно возрастанию j в цикле.
в чем может быть проблема?