С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 19

Как организовать побайтовое чтение изображения?

01.10.2015, 05:24. Показов 5236. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени, есть задача выполнять некоторые действия над изображением свыше 20000х20000 пикселей, все расчеты готовы, но уперлись в возможно открытия данного изображения, не хватит ни какой памяти для 40 пользователей, вопрос заключается в следующем, подскажите какой ни будь формат или библиотеку или ещё что, для того что бы не приходилось грузить всю картинку целиком в память, расчеты выполняются по линиям по этому больше чем 1 линия пикселей в 1 промежуток времени просто не нужно !!! все стандартные средства c# прежде чем возможно получить доступ к первой строке пикселей, целиком загружают её, я понимаю что методы сжатия ил описания форматов обязывают иначе будет краказябры. вот по этому и спрашиваю, как можно считывать из файла пиксели хоть по 1 хоть целиком построчно, но при этом не загружая его полностью.
Язык c#.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.10.2015, 05:24
Ответы с готовыми решениями:

Socket побайтовое чтение
Ребят, привет всем. На java раньше ничего не писал, но по некоторым причинам нужно сейчас написать клиентское приложения, работающее по...

Побайтовое чтение COM порта
Доброго времени суток. Обычно из COM порта читают передавая в функцию чтения указатель на буфер и сколько байтов прочитать. Как...

Побайтовое чтение файла и перевод в биты
в общем есть файл, я его открываю на чтение от так f = open(name, 'rb') a = f.read(4) ну вот допустим я читаю 4 первых байта ...

10
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
01.10.2015, 12:19
Alitrix, первый вопрос, в каком формате представлено изображение?
Это имеет большое значение, потому как, например jpg, не хранит информацию по пикселям, и побайтное чтение файла ничего не даст, всё равно нужно прочесть всё и распаковать. Побайтно картинка храниться в формате bmp, в данном случае нужно работать не с классами изображений, а с классами библиотеки IO, и самостоятельно контролировать считывание каждого байта.

Следующий момент(типа рекомендация): если уж вы собираетесь реализовывать многопользовательский доступ к такого рода ресурсоёмким задачам, то, пожалуй, следует обеспокоиться наличием этих ресурсов.
Обработка картинки в 400 мегапикселей на домашнем компьютере - это крайне неразумное решение.
0
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 19
02.10.2015, 12:01  [ТС]
сервер есть, на данный момент 2Х8core Xeon 48Гб, короче это не суть, поставить можем и в 10 раз круче, не в этом вопрос, изначально изображение векторное, SVG, есть ли пример прямого чтения и записи bmp , если есть можете ли вы поделиться им. просто суть в том что обработка займет примерно 1-6 секунд, и после этого мне не нужен этот файл.

Добавлено через 5 минут
да и вообще очень странно, я пробовал открывать стандартным виндовс вьювером изображение 50000на 80000 он открывает, долго рипует тока, но суть в том что он открывает его и затраты просто Безбожно малы..метров 50+, и при этом он его показывает, вопрос, КАК ????? но тут же попытавшись открыть через ср...ы bitmap я получил 2г+ в загрузке(
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
02.10.2015, 12:16
Цитата Сообщение от Alitrix Посмотреть сообщение
КАК ?????
некоторые программы показывают пользователю не само изображение, а его уменьшенную копию
Цитата Сообщение от Alitrix Посмотреть сообщение
есть ли пример прямого чтения и записи bmp
нет, не приходилось так морочиться. Используй этот метод и работающие с ним в связке.
0
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 19
02.10.2015, 13:24  [ТС]
то есть получается, что мне всё равно придётся 1 раз но раскрыть изображение полностью и например пересохранить в bmp не сжатый для последующей обработки ? изначально изображение в SVG.

Добавлено через 57 секунд
прочитать из потока байты это понятно, как декодировать ?
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
02.10.2015, 14:06
Цитата Сообщение от Alitrix Посмотреть сообщение
изначально изображение в SVG
Что-то я не могу понять, в каком же у вас формате изображение? Вы то говорите про SVG, то про BMP.
Каков объем SVG? Это же векторный формат, наврядли он у вас гигабайтный. Откуда вы берете BMP? Как вы его получаете? Почему бы вам не пробовать открыть SVG в программе, без промежуточного BMP? Ведь есть библиотеки для SVG под C#.
0
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 19
02.10.2015, 17:10  [ТС]
изначальное изображение рисуется в SVG, но для обработки требуется растр ! перевод производится с помощью SVG.NET.

Добавлено через 1 минуту
изображение в векторе может достигать 10 метров ! в качестве 96dpi, в растре это огроменные не реальный цифры.

Добавлено через 48 минут
и самое плохое то что весь расчет уже есть, он работает и очень хорошо, и в один момент уперлись в размер объекта с которого берутся контур и дальнейшая обработка. требуется обработка минимум 5х5 метров изображения.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
02.10.2015, 18:44
Alitrix, что вам мешает рендерить SVG не целиком, а кусочками по одной строке пикселов? И тут же обрабатывать эту строку. Вы же сами в первом посте пишите что вы обрабатываете это изображение построчно.
0
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 19
02.10.2015, 19:20  [ТС]
возможно мы говорим о разных библиотеках SVG, но с той которой работаю я, я не видел возможности работать с рендерингом 1 строки ((( либо смотрю не туда (( хотя такая мысль уже была пару дней назад. Работаю с https://svg.codeplex.com/

Добавлено через 58 секунд
если вы можете показать другую или на этой как рендерить по 1 строке...буду очень сильно признателен...меня избавит это от огромных проблем.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
02.10.2015, 20:16
Цитата Сообщение от Alitrix Посмотреть сообщение
как рендерить по 1 строке
Вот пример:
C#
1
2
3
4
5
6
7
8
9
            var doc = Svg.SvgDocument.Open("c:\\1.svg");
 
            using (var bmp = new Bitmap((int)doc.Width.Value, 100))//создаем битмап высотой 100 пикселов
            using (var rend = Svg.SvgRenderer.FromImage(bmp))
            {
                rend.TranslateTransform(0, -30);//сдвигаем на 30 пикселов
                doc.Draw(rend);
                bmp.Save("c:\\1.png");
            }
Исходное изображение (SVG):


Отрендеренное изображение (PNG):

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

Используется https://svg.codeplex.com/
0
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 19
03.10.2015, 01:39  [ТС]
Понял.. Огромный респект, вы абсолютно правы ), я упустил этот момент (. всё получилось Даже не знаю как вас и отблагодарить )

Добавлено через 10 минут
А вот ещё один интересный вопрос, а можно ли с помощью этой библиотеки отрисовывать только какой то отдельный объект из файла с векторами ? ну например в файле на листе их 10, а я рисую только 3-й ?Я видел что получить количество елеметов и их пути можно, это нужно создать новый SvgDocument с нужными параметрами и отрисовать в него данный path ? с 3-го элемента ? или можно как то просто передать весь массив значений 3-го пути и библиотека сама его отрисует ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.10.2015, 01:39
Помогаю со студенческими работами здесь

MP3 Tags + побайтовое чтение файла
Доброе время суток! Подскажите относительно простой способ работы с Mp3 тагами, А то в сети нашел только библиотеку taglib но что то...

Побайтовое чтение и запись любого типа файлов
Добрый вечер! Мне нужно побайтово прочитать файл любого расширения, а дальше уже проводить операции с байтами, а именно умножать,...

Как организовать чтение из файла
вот есть программа как сделать чтобы она считывалась с файла построчно типа записи Public Class Form1 Public Structure wer ...

Как организовать чтение данных
Здравствуйте, есть простенькая задача с олимпиады по программированию (10-11 классы). На php написал ее без проблем (брал данные из файла),...

Как организовать чтение из потока?
Задача стоит в том, как из потока считывать по два бита и записывать в элемент массива по два считанных бита. Массив типа char.


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru