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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QImage в QDataStream  (Прочитано 12343 раз)
jatsuk
Гость
« Ответ #15 : Сентябрь 28, 2011, 09:34 »

И всё же пришлось делать бинарный (
Через txt не проканало, я наконец понял что преподу нужно...

Судь такова сохранить эти 3 массива в .bin, ( чтобы размер картинки был равен = этого массива )

Код:
 int TotalSize=width_im *height_im;

     FILE *out = fopen("array.bin", "wb");  // Открыть файл
  fwrite(red, TotalSize, 1, out);
        fclose(out);    // Закрыть файл

P.S. Извиняюсь перед человеком, который сказал про fwrite и  wb , а я этот вариант не принял...

Сохраняю в этом примере только красную составляющую цвета..

В итоге всё сохраняется, весит также, короче всё ок, но !!! при восстановлении из этого бинарного файла происходят какие то помехи.
Рисунок приложу

Считываю вот так
Код:
 int height_im = 400;
    int width_im = 400;
int TotalSize=width_im *height_im;
int Y [height_im][width_im];

   FILE *in = fopen("array.bin", "rb");   // Открыть файл
    fread(Y, TotalSize, 1, in);   // Прочитать данные
    fclose(in);    // Закрыть файл


1) Значения вроде  записываются правильные (проверял, сохранив как бмп картинку)
2) Ошибки эти возникают всегда в одних местах...

[img="http://itmode.ru/Mysor/ddd.bmp"][/img]
« Последнее редактирование: Сентябрь 28, 2011, 09:36 от jatsuk » Записан
jatsuk
Гость
« Ответ #16 : Октябрь 01, 2011, 14:25 »

Вроде разобрался, не  так я записывал...

раньше было  fwrite(red, TotalSize, 1, out);
где в роли TotalSize был размер изображения - тоесть 400*400= 160к

fwrite(red, sizeof(red), 1, out);

sizeof(red) - размер массива.

странно, я думал эти значения одинаковы. В итоге картинка bmp  весит 468, а бинарник 1875 - ровно в 4 раза больше

Погуглил и понял , что просто массив int , а  int - 4 байта, поэтому и больше в 4 раза.
Попробую сохранить как char, чтобы весило нормально
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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