1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 39
|
|
1 | |
Как одномерный массив представить двумерным?10.06.2013, 13:22. Показов 3834. Ответов 23
Метки нет (Все метки)
Я загрузил изображение. И есть указатель на его однобайтные пиксели: BYTE *pixels;
Пиксель [5,8] считываю так: pixels[5*Width+8]; А как сделать, чтоб pixels[5,8] ? Пробую через другой указатель: BYTE *array[Width][Height]=pixels; Компилятор ругается.
0
|
10.06.2013, 13:22 | |
Ответы с готовыми решениями:
23
Как представить многомерный массив в одномерный? Как представить пятимерный массив? Как представить массив в привате Представить строку как массив чисел |
10.06.2014, 01:49 | 2 | ||||||||||
Я как-то писал программу, которая может помочь понять: как с одно мерным массивом, можно работать, как с двухмерным.
a-вниз o-влево p-вправо Добавлено через 14 минут Прошу прощения, предыдущий исходник, ссылался на мою библиотеку.
0
|
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 39
|
|
11.06.2014, 08:13 [ТС] | 3 |
Не то. Вот что бы не пришлось писать такой код как у вас я и задумался, может как нибудь можно извратиться с указателями, что бы не приходилось каждый раз при обращении к массиву указывать width (в вашем случае 80).
0
|
Неэпический
|
||||||
11.06.2014, 08:39 | 6 | |||||
0
|
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 39
|
|
11.06.2014, 08:41 [ТС] | 7 |
0
|
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 39
|
|
11.06.2014, 09:16 [ТС] | 10 |
Через operator и структуру интересный вариант. Нечто похожее через макросы хотел делать. Но в обоих случаях идет лишнее умножение. Работая с большим объемом пикселей, не очень рационально. Хотя, может разницы и не будет.
Добавлено через 10 минут А что не ясно. По указанной ссылке скачиваешь и добавляешь в свой проект lodepng.cpp и lodepng.h. И грузишь PNG рисунок с помощью функции lodepng::decode(...) Если надо более подробно - на той странице чуть ниже есть примеры использования.
0
|
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 39
|
||||||
11.06.2014, 10:52 [ТС] | 12 | |||||
А, я думал ты интересуешься для себя, как загружать картинки. Но сейчас увидел твой рейтинг и понял, что хочешь помочь.
Память не выделяю. В параметре передаю вектор. Функция сама его устанавливает в нужный размер и возвращает в нем байты картинки.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,520
|
||||||||||||||||
11.06.2014, 11:54 | 13 | |||||||||||||||
почему DWORD???
если работаешь с виндой то есть COLORREF что ты дальше делаешь с картинкой? есть тупой вариант создать двумерный массив и скопировать в него есть вариант по типу Croessmah, но без структуры типа
если боишься умножения то зря в любом случае оно будет присутствовать если объявишь массив так
b=*(a+(5+5*10)); единственно что если ширина кратна степени 2 то умножение могут заменится сдвигом
1
|
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 39
|
|
11.06.2014, 12:47 [ТС] | 14 |
Там возвращается фиксированный формат 4 байта на пиксель. Но теперь знаю и про COLORREF. А нужно все для последюущего анализа пикселей.
Инлайновую функцию не хочу использовать т.к. где то читал, что это лишь пожелание компилятору. Он может и не зайинлайнить в некоторых случаях. Я пишу мелкие классы без CPP файлов. Сразу в H-ке расписываю тело функций. (меня парит по 2 раза писать название и параметры функции, и в случае их изменения следить чтоб они совпадали). А при таком "упрощенном" способе как раз и не работает инлайн. Хотя могу ошибаться. Давно дело было. Тему создал год назад. И только сейчас ответили.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,520
|
|
11.06.2014, 13:37 | 15 |
нук COLORREF такой и есть
структура из 4 байтов RGB и четвертый резервный Современные как раз инлайнят по своему желанию, даже если не попросишь точнее как раз работает функция реализованная в описании класса становится inline а на первое то сообщение я не посмотрел
0
|
Заблокирован
|
||||||
11.06.2014, 14:05 | 16 | |||||
0
|
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
|
|
11.06.2014, 14:54 | 17 |
Был предложен и существенно более умный вариант - завести массив указателей на начала строк и адресоваться через него. Если кто-то предложит что-то эффективнее - с интересом выслушаю .
0
|
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
|
||||||
11.06.2014, 17:00 | 19 | |||||
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,520
|
|
11.06.2014, 17:13 | 20 |
покаж
я пока увидел работу со всей строчкой как например получить элемент 0,0 и сравнить его с 0,1?
0
|
11.06.2014, 17:13 | |
11.06.2014, 17:13 | |
Помогаю со студенческими работами здесь
20
Представить трехмерный массив как двумерный Представить слово как массив букв Как представить массив состоящий из дробей ? Дан одномерный массив А, состоящий из N целых чисел. Переписать из него в одномерный массив В все нечетные числа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |