Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
39 / 38 / 6
Регистрация: 17.07.2015
Сообщений: 380
Записей в блоге: 1

Чтение/запись большого изображения БЫСТРО

28.06.2017, 14:29. Показов 1290. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Я знаю способ как прочитать или изменить массив пикселей в любой картинке(почти любой, гиф не могу, но мне и не надо), но для изображений больше 1000x1000 процесс идёт как-то не очень быстро(это не связано с пк, я пробывал на пк производительнее в несколько раз, но длилось всё примерно одинаково).
Код чтения
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function getBytesArr(image1 As Bitmap) As Byte()
        Dim x, y, i As Integer
        Dim arr(image1.Width * image1.Height * 3) As Byte
        i = 0
        Dim maxprog As Long = arr.Length * 2
        For x = 0 To image1.Width - 1
            For y = 0 To image1.Height - 1
                arr(i) = image1.GetPixel(x, y).R : i += 1
                arr(i) = image1.GetPixel(x, y).G : i += 1
                arr(i) = image1.GetPixel(x, y).B : i += 1
                My.Settings.progress(2) = CDbl((i / maxprog) * 100)
            Next
        Next
        Return arr
    End Function
Код записи
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
For Xcount = 0 To myBitmap.Width - 1
                    Dim Ycount As Integer
                    For Ycount = 0 To myBitmap.Height - 1
                        Dim a As Integer, b As Integer, c As Integer
                        a = CInt(img_bytes(FPos)) : FPos += 1
                        b = CInt(img_bytes(FPos)) : FPos += 1
                        c = CInt(img_bytes(FPos)) : FPos += 1
                        myBitmap.SetPixel(Xcount, Ycount, Color.FromArgb(255, CInt(a), CInt(b), CInt(c)))
                        My.Settings.progress(0) += 1
                        My.Settings.progress(2) = CDbl((My.Settings.progress(0) / My.Settings.progress(1)) * 100)
                        If My.Settings.progress(2) >= 100 Then
                            My.Settings.progress(2) = 99
                        Else
                        End If
                    Next Ycount
                Next Xcount
                myBitmap.Save(fileOut)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.06.2017, 14:29
Ответы с готовыми решениями:

Запись большого объема данных в файл Word максимально быстро
вообщем есть массив данных...а точнее Datatable с обьемом порядка 200 000 строк. есть шаблон ворд. массив определенным образом...

Получение большого числа Label и запись их в массив
Всем здравствуйте. Dim lbl() As Label lbl = New Label() {Label1, Label2, Label3, Label4, Label5, Label6, Label7, Label8, Label9,...

Чтение геотегов с изображения
Здравствуйте. Помогите пожалуйста считать геотеги (широту,долготу) из файла изображения. У меня все получается, за исключением числа...

5
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
28.06.2017, 15:21
Прогресс попробуй убери.
0
39 / 38 / 6
Регистрация: 17.07.2015
Сообщений: 380
Записей в блоге: 1
28.06.2017, 15:40  [ТС]
SoftIce, пробовал, никак не сказывается на скорости
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
28.06.2017, 15:47
Используйте LockBits\UnlockBits
0
39 / 38 / 6
Регистрация: 17.07.2015
Сообщений: 380
Записей в блоге: 1
28.06.2017, 15:47  [ТС]
ovva, а можно пример для чайников?
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
28.06.2017, 16:27
Лучший ответ Сообщение было отмечено edward_freedom как решение

Решение

Достаточно воспользоваться поиском на этом форуме (тема обсуждалась и не раз) например
https://www.cyberforum.ru/post9845139.html
https://www.cyberforum.ru/post8642938.html
и др.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.06.2017, 16:27
Помогаю со студенческими работами здесь

Не работает чтение текста из изображения
Доброго времени суток! Я задался вопросом записи текста в файл(изображение). Так-то вроде-бы ошибок нет(я не вижу никаких ошибок), но при...

Чтение\запись по адресу
Как с помощью стрим ридера\врайтера читать или записывать файл по адресу (Например, нужно создать файл "Блокнот.txt" по адресу...

Запись и чтение из файла
Добрый вечер, форумчане. Мне надо записывать\читать в файл именно нужную мне строку. К примеру, мне надо записать в конец файла что-то и...

Чтение и запись из *.txt
Все не могу понять как это делать. Понимаю, что это легко, но почему-то до меня не доходит. Наверное нужен пример с пояснением. ...

Чтение и запись в файл
как произвести чтение и запись в файл из программы например: language = ru Form.main.title = программа Button.next.text =...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru