Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
 Аватар для Justix
73 / 19 / 0
Регистрация: 26.04.2012
Сообщений: 233

Считывание PNG

08.01.2013, 22:46. Показов 3204. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,форумчане)
Пытаюсь прочитать PNG файл,вообще убейте не понимаю почему не работает.Даже длину и ширину нормально не считывает.
Кусок кода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   file = fopen(Name, "rb");
       if(file == NULL)
       {
        //MessageBox(NULL, 0, L"Ne ydalos onkrit file!", MB_OK); 
        exit(1);
   }; 
     
fseek(file, 12, SEEK_SET); 
    fread(&q[0],1,1,file);//char
    fread(&q[1],1,1,file);//char
    fread(&q[2],1,1,file);//char
    fread(&q[3],1,1,file);//char
    fread(&width,sizeof(int),1,file);//int
    fread(&height,sizeof(int),1,file);//int
    fread(&depth,1,1,file);//char
в массив q для проверки что вообще что считывается правильно считал тип чанка iHDR,вроде считался)
а вот дальше...размеры пнг 32x32,в данных весит
width = 536870912 height = 536870912 depth = -52 'М'
А должно быть 32,32,8...
Что не так?

Добавлено через 21 минуту
ап ап ап

Добавлено через 37 минут
Помогите пожалуйста...срочно нужно...(
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.01.2013, 22:46
Ответы с готовыми решениями:

Заменить считывание с клавиатуры на считывание из файла
Помогите пожалуйста, ни разу не работал со считыванием из файла поэтому не понимаю как и что делать. Почитал в интернете, попробовал, не...

Read PNG in C
Всем привет. Подскажите как на С (без привлечения сторонних библиотек) прочитать PNG файл. В конечном итоге хотелось бы получить...

Объединение нескольких png файлов в один png-файл
В общем надо написать програмулину, которая объединяет несколько png файлов (ширина и высота одинаковы у изображений) в один png-файл. ...

15
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
08.01.2013, 22:53
big endian же. Кстати, вы уверены, что int — это всегда четыре байта?

Добавлено через 35 секунд
Вообще, зачем этот велосипед, вам не хватает библиотек для загрузки?
0
 Аватар для Justix
73 / 19 / 0
Регистрация: 26.04.2012
Сообщений: 233
08.01.2013, 22:57  [ТС]
big endian же .... -что простите?
не уверен,но 32 битной системы должен быть)
а зачем мне целая библиотека для этого?я не сторонник библиотек,я не настолько крутой программист ,чтобы ими пользоваться ,в том плане что надо знать азы(имхо)
Не переходим от темы...Я ставил просто число 4 а не сайзоф(инт),всё равно
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
08.01.2013, 23:08
Цитата Сообщение от Justix Посмотреть сообщение
что простите?
Порядок байт другой, в x86 для внутреннего представления чисел используется little endian, то есть порядок от младшего к старшему, а вот в PNG наоборот(да и много где ещё, это вообще практически стандарт для передачи/хранения данных). Соответственно, просто считать недостаточно, ещё и порядок надо поменять.
Цитата Сообщение от Justix Посмотреть сообщение
а зачем мне целая библиотека для этого?я не сторонник библиотек
А зачем тебе велосипед, который делает ровно тоже самое?
Цитата Сообщение от Justix Посмотреть сообщение
Я ставил просто число 4
А тип переменной-то небойсь не поправил...
0
 Аватар для Justix
73 / 19 / 0
Регистрация: 26.04.2012
Сообщений: 233
08.01.2013, 23:15  [ТС]
А как поменять порядок?
Затем что я буду знать как он работает,ибо сам написал.
А на какой менять-то,флота вроде 4 байта,но там тоже билебирда
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
08.01.2013, 23:23
ntohl()
Цитата Сообщение от Justix Посмотреть сообщение
Затем что я буду знать как он работает,ибо сам написал.
Знать формат заголовка и функцию декодирования? Малополезное знание ИМХО.
Цитата Сообщение от Justix Посмотреть сообщение
на какой менять-то
На тип фиксированной длины, очевидно. int32_t
0
 Аватар для Justix
73 / 19 / 0
Регистрация: 26.04.2012
Сообщений: 233
08.01.2013, 23:36  [ТС]
С функцией ошибку выдаёт линкования,не подскажите какую либу использует,чтобы в pragma comment запихнуть?)
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
08.01.2013, 23:51
Гугл для виндов рекомендует ws2_32.lib, хотя в уважающих себя системах оно прямо в libc...
0
 Аватар для Justix
73 / 19 / 0
Регистрация: 26.04.2012
Сообщений: 233
09.01.2013, 00:25  [ТС]
О даааааааааааааааааа!!!!!!!!!!!!!!!!!!!!С пасибо вам большое!!!!))))

Добавлено через 24 минуты
Блин,считал вроде,а там выводится не изображение, а фиг пойми что((
Это может быть связано с сжатием изображения в формате?
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
09.01.2013, 00:30
да запросто. вы инфу расжимали? нет? тогда результат закономерен. возвращайтесь к посту #2
0
 Аватар для Justix
73 / 19 / 0
Регистрация: 26.04.2012
Сообщений: 233
09.01.2013, 00:41  [ТС]
А вот и не пойду я за библиотекой,нашёл про алгоритм сжатия,ещё пол ночи осталось,надеюсь напишу декодирование)
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
09.01.2013, 00:49
это если в png используется тот же алгоримт. а если другой? а если разные и параметры алгоритма в хидере записаны. врятли нормый декодер получится за пол ночи сделать. может даже и недели не хватит при отсутствии необходимого опыта. вот есть либа libpng и чтобы ее заюзать, мне там копаться пришлось, а она заточена под это дело. ну в общем дерзайте.
0
 Аватар для Justix
73 / 19 / 0
Регистрация: 26.04.2012
Сообщений: 233
09.01.2013, 03:06  [ТС]
Да я короче забил,и написал шейдер, который кое какой цвет принимает за полностью прозрачный)
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
09.01.2013, 10:49
Цитата Сообщение от Justix Посмотреть сообщение
а зачем мне целая библиотека для этого?я не сторонник библиотек,я не настолько крутой программист ,чтобы ими пользоваться
Определись: или не настолько крутой, или чтоб ими пользоваться.
0
545 / 344 / 12
Регистрация: 05.11.2010
Сообщений: 1,076
Записей в блоге: 1
09.01.2013, 13:16
ntohl()
Офигенный подход - для чтения png подключать winsock и пользоваться его функциями, которые даже расшифровываются как "net|host to host|net short|long", что намекает нам на их предназначенность к использованию при сетевом взаимодействии.
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
09.01.2013, 13:34
Цитата Сообщение от Герц Посмотреть сообщение
для чтения png подключать winsock
Я уже написал, что в нормальных системах эта функция включена в libc. И как бы она делает ровно то, что нужно: переводит из стандартного сетевого порядка, которым и является big endian, в хостовый, каким бы он не был.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.01.2013, 13:34
Помогаю со студенческими работами здесь

Вращение TImage c PNG. Нужна переделка решения для BMP под PNG
Здравствуйте. Очень нужна помощь с вращением. Есть решение данной проблемы для формата bmp :...

Какое расширение выбрать JPG/GIF/PNG-8/PNG-24
Применение их

Close.png не была загружена, потому что её MIME-тип («image/png») не «text/css»
Вот такую получаю ошибку Таблица стилей http://localhost:8080/temp/images/close.png не была загружена, потому что её MIME-тип...

PNG анимация из одного и нескольких PNG-файлов
Доброго времени суток! До начала изучения языка программирования, я увлекался созданием игр через специальные программы, в них была...

Открытие страницы fon.png.php вместо файла fon.png
видел сайт где на все файлы(например fon.png) стоят файлы-страницы(например fon.png.php), в итоге, если набрать путь в картинке то...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru