| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > pictureBox и большая картинка? |
| Автор: myendlessness 22.9.2009, 15:24 | ||
| Ребята подскажите, пожалуйста, есть разного размера картинки, загружаю их в pictureBox и всё нормально, но как только пытаюсь загрузить большую картинку размером 222Мб выкидывает вот такую ошибку - "Недопустимый параметр" (System.ArgumentException) вот код:
|
| Автор: Crypton 22.9.2009, 22:09 | ||
А может лучше переписать в
? А виснет только при таком размере? Пробовали другие картинки в том-же формате но поменьше? |
| Автор: myendlessness 23.9.2009, 10:42 | ||||
| 2 Crypton Я загружал файлы этого же формата (Tif) разного размера, например: 76Мб, 12Мб, 1Мб, 256Кб и все они работали нормально, не выдавало никаких ошибок. Не понял как именно Вы предлагаете переписать, если Вам не трудно покажите как именно Вы предлагаете изменить данную конструкцию с using:
Добавлено через 3 минуты и 11 секунд Попробовал вот так, оно вообще вылетает!
Видимо это именно то, что Вы предлагали? |
| Автор: Ptica_Oz 23.9.2009, 14:25 | ||
| и мне, и мне помогите! задача состряпать новый растр из старого + текст пишу так:
ошибку выдаёт ту же "Недопустимый параметр". тестирую на .tif разных размеров есть подозрения, что сабака порылась в самих файлах, а размеры тут не причём, но не уверена |
| Автор: Crypton 24.9.2009, 05:10 |
| Немного погуглив выходит, что проблема при сжатии формата. Когда сохраняется в тиф, народ пишет что используется сжатие от jpeg, в следствии чего и вылетает такая вот ошибка. Это один вариант. Но вернемся к сабжу. Выходит, что все работает спокойно пока мы не перейдем определенный порог памяти (все-же загрузка картинки в обоих вариантах происходит сначала в память а потом уже дается ссылка на картинку к picturebox). Возможно просто происходит внутреннее переполнение буфера и GDI падает. Попробуйте сжать как-нибудь картинку и потом уже давать её picturebox. На крайняк попробуйте скомпилировать приложение под x64 (если система позволяет). Никогда с такой проблемой не сталкивался так что могу понаписать фигни еще тут |
| Автор: myendlessness 24.9.2009, 16:04 |
| Порылся в сети ничего внятного не нашёл, есть похожие проблемы, но так же не было на них вразумительного ответа, либо это была проблема "пути", то есть файл не находился по заданному адресу! Но это не мой случай, однако, всё равно вылетает. |
| Автор: Ptica_Oz 29.9.2009, 13:17 | ||
попробовала так:
теперь вылетает на строке "Graphics gr = Graphics.FromImage(pageImage);" со словами "Невозможно создать объект графики из изображения, имеющего формат с индексированными пикселами." если pageImage создаю без указания формата пикселей, то ругается на строке "gr.DrawImageUnscaled(image, 0, 0);" со словами "Недостаточно памяти" Да, ещё! я тестирую на разных файлах расширения .tif с разными сжатиями (CCITT Group 3, CCITT Group 4, ZIP, LZW и без сжатия) и разными физическими размерами рисунка (А1, А3, А4). ZIP вообще не берётся, никакой. остальные сжатия маленьких размеров (А4, А3) обрабатываются кодом из моего предыдущего поста, а А1 не может. Обращаю внимание, что размер занимаемой файлом памяти не играет роли. Тестила на 38Мб многостраничном файле А4 - работало! яки будут пропозиции? |
| Автор: myendlessness 30.9.2009, 11:31 |
| 2 Ptica_Oz 38Мб это небольшой файл, у меня загружается и 76Мб нормально без проблем, а вот 222Мб уже не хочет. Правда я загружаю Tiff (без сжатия). |
| Автор: Ptica_Oz 1.10.2009, 11:48 | ||
этот пример создаёт новый файл во временной директории. В момент "gr.DrawImageUnscaled(image, 0, 0);" файл может принять очень большие размеры, т.ч. если на диске мало места, то будет вылизать ошибка "Недостаточно памяти". Проверила на файле 65Мб - цветная 8-битная картинка без сжатия размером А1, сработало. если у кого есть что сказать по этому поводу, говорите не стесняйтесь |
| Автор: myendlessness 21.10.2009, 12:19 | ||||
У меня всё равно вылетает большая картинка 222Мб, ничего не мгу понять, вот привожу Disassembly может кто-то что-то подскажет
Загрузка изображения следующая
|
| Автор: myendlessness 21.10.2009, 12:44 | ||||
| Посмотрел вообще ни одна картинка не зугружается сейчас! Переписал загрузку
Теперь загружаются картинки нормально, только большая не загружается и вылетает вот здесь
Пишет ошибку: An unhandled exception of type 'System.ArgumentException' occurred in System.Drawing.dll Additional information: Недопустимый параметр. |
| Автор: Crypton 21.10.2009, 15:26 | ||
Ошибки подобного типа происходят как раз в GDI а не в .net |
| Автор: myendlessness 21.10.2009, 15:59 |
| 2 Crypton Что это означает? Где нужно рыть чтобы понять? |
| Автор: Ptica_Oz 22.10.2009, 12:20 |
| 2 myendlessness: GDI не совершенен, может всё-таки дело в картинке?... поробуй проанализировать чем, кроме размера, она отличается от остальных... |