Форум программистов, компьютерный форум CyberForum.ru

считывание изображения - C++

Войти
Регистрация
Восстановить пароль
 
beta-particle
 Аватар для beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
03.10.2013, 23:45     считывание изображения #1
Доброго времени суток, форумчане! У меня имеется растровое изображение размером 50x50 пикселей. Подскажите пожалуйста, как считывать с него пиксели в некий двумерный массив?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2013, 23:45     считывание изображения
Посмотрите здесь:

C++ считывание строки
Считывание из файлов C++
C++ считывание из файла
C++ Считывание из бинарника
C++ Считывание из файла
C++ Считывание из файла
Считывание из файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XRuZzz
Антикодер
605 / 506 / 25
Регистрация: 15.09.2012
Сообщений: 2,451
04.10.2013, 00:05     считывание изображения #2
надо глянуть формат файла, как там хранятся данные. и побайтово считывать.(то есть файл можно открыть в двоичном режиме)
например первые два байт говорят нам о том, что это BMP, далее (например) байты могут идти поочередно по три байта, типа как пиксель 3 байта R G B, далее опять пиксел 3 байта R G B и так далее. Более подробно в вики
BMP_file_format (примеры в конце)
beta-particle
 Аватар для beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
04.10.2013, 00:07  [ТС]     считывание изображения #3
XRuZzz, формат файла .png
HedgehogLu
 Аватар для HedgehogLu
147 / 68 / 1
Регистрация: 04.09.2013
Сообщений: 254
04.10.2013, 00:10     считывание изображения #4
Метод в лоб. Знать формат файла и согласно формат строить массив.
Либо использовать функции АPI

Добавлено через 1 минуту
правда через апи считывал тока под винду. и тока бмп
XRuZzz
Антикодер
605 / 506 / 25
Регистрация: 15.09.2012
Сообщений: 2,451
04.10.2013, 00:11     считывание изображения #5
Portable_Network_Graphics странно да? опять в вики всё написано

там ещё говориться что для работы с png нужно использовать библиотеку libpng если не хочется всё самому ручками писать.
beta-particle
 Аватар для beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
04.10.2013, 00:19  [ТС]     считывание изображения #6
XRuZzz, а если самому писать, то придется декодировать еще?
XRuZzz
Антикодер
605 / 506 / 25
Регистрация: 15.09.2012
Сообщений: 2,451
04.10.2013, 09:38     считывание изображения #7
Цитата Сообщение от beta-particle Посмотреть сообщение
XRuZzz, а если самому писать, то придется декодировать еще?
а смысл? я открываю доку на libpng и сразу вижу там.
This file describes how to use and modify the PNG reference library (known as libpng)
for your own use. There are five sections to this file: introduction, structures, reading,
writing, and modification and configuration notes for various special platforms. In
addition to this file, example.c is a good starting point for using the library, as it is
heavily commented and should include everything most people will need. We assume
that libpng is already installed; see the INSTALL file for instructions on how to install
libpng.
For examples of libpng usage, see the files ”example.c”, ”pngtest.c”, and the files
in the ”contrib” directory, all of which are included in the libpng distribution
вам нужно скачать библиотеку и глянуть, как использовать библиотеку.

Если формат предполагает сжатие то нужно декодировать. А библиотека включает в себя такой декодировщик

кстати ссылка на доку libpng
beta-particle
 Аватар для beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
04.10.2013, 23:34  [ТС]     считывание изображения #8
XRuZzz, да, спасибо, я-таки удосужился скачать эту библиотеку. Сейчас роюсь в ней, разбираюсь..

Добавлено через 6 часов 7 минут
XRuZzz,
C++
1
2
3
4
5
6
7
8
9
10
11
FILE *fp = fopen(file_name, "rb");
if (!fp)
{
return (ERROR);
}
fread(header, 1, number, fp);
is_png = !png_sig_cmp(header, 0, number);
if (!is_png)
{
return (NOT_PNG);
}
Самое странное то, что компилятор ругается на "error", говоря, что идентификатор не определен. Хотя далее используется та же конструкция типа return(error). Порыскал, в мануале, ничего про это не написано. Может быть проблема с библиотекой, как вы думаете?
Ах да, еще в example.c тоже ничего не нашел.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2013, 10:19     считывание изображения
Еще ссылки по теме:

C++ Считывание в файл
Считывание из файла C++
C++ Считывание из файла
Считывание из файла C++
Считывание кириллицы C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
XRuZzz
Антикодер
605 / 506 / 25
Регистрация: 15.09.2012
Сообщений: 2,451
05.10.2013, 10:19     считывание изображения #9
ну если в header-ах нет этих констант то можно добавить
C++
1
2
3
4
5
enum
{
   ERROR,
   NOT_PNG
}
Желательно сразу создавать нормальные классы. Вместо fopen в C++ принято использовать fstream.
Yandex
Объявления
05.10.2013, 10:19     считывание изображения
Ответ Создать тему
Опции темы

Текущее время: 16:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru