|
7 / 7 / 3
Регистрация: 10.04.2015
Сообщений: 57
|
|||||||||||
Ошибка при сериализации Image28.10.2016, 23:43. Показов 3937. Ответов 12
Метки нет (Все метки)
При серализации Image вылетает исключение: В GDI+ возникла ошибка общего вида.
PS: Если вместо Image использую Bitmap все работает ! StackTrace: Кликните здесь для просмотра всего текста
в System.Drawing.Image.Save(Stream stream, ImageCodecInfo encoder, EncoderParameters encoderParams)
в System.Drawing.Image.Save(MemoryStream stream) в System.Drawing.Image.System.Runtime.Seri alization.ISerializable.GetObjectData(Se rializationInfo si, StreamingContext context) в System.Runtime.Serialization.Formatters. Binary.WriteObjectInfo.InitSerialize(Obj ect obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) в System.Runtime.Serialization.Formatters. Binary.ObjectWriter.Write(WriteObjectInf o objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo) в System.Runtime.Serialization.Formatters. Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) в System.Runtime.Serialization.Formatters. Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck) в System.Runtime.Serialization.Formatters. Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) в MSNClient.Client.Sender(Message msg) в C:\Users\Pasha\Documents\Visual Studio 2015\Projects\MSNClient\MSNClient\Client .cs:строка 103 Код метода в котором объект сериализуеться:
Я надеюсь это ошибка не связана с тем что Image абстрактный класс ?
0
|
|||||||||||
| 28.10.2016, 23:43 | |
|
Ответы с готовыми решениями:
12
Ошибка при Xml сериализации Ошибка при сериализации XML Ошибка при сериализации объекта с помошью XmlSerializer |
|
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,406
|
|
| 29.10.2016, 05:40 | |
|
Bespredeliwe, приведи текст ошибки и тип исключения. Стёк вызовов ничего об ошибке не говорит.
0
|
|
|
7 / 7 / 3
Регистрация: 10.04.2015
Сообщений: 57
|
|
| 29.10.2016, 11:07 [ТС] | |
|
Usaga, System.Runtime.InteropServices.ExternalE xception: "В GDI+ возникла ошибка общего вида."
0
|
|
|
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,406
|
|||||||||||
| 29.10.2016, 12:23 | |||||||||||
Сообщение было отмечено Bespredeliwe как решение
Решение
Bespredeliwe, похоже, что не ты один с такой проблемой столкнулся. Как решение можно переопределить логику сериализации для класса Message, где объект Image будет явно сохраняться в BMP или PNG.
Судя по стёку вызова (который, таки, пригодился) сериализация Image так и происходит - он тупо сохраняется с помощью Image.Save, но, видимо, в формат JPEG с которым и возникают проблемы (по ссылке сказано, что на XP проблемы нет, странно). И ещё, зачем ты выделяешь буфер в почти 10 мегабайт:
1
|
|||||||||||
|
7 / 7 / 3
Регистрация: 10.04.2015
Сообщений: 57
|
|
| 29.10.2016, 12:45 [ТС] | |
|
Usaga, Спасибо за ответ, да код кустарный, все правлю на ходу, поэтому это осталось с прошлых вариантов, и пока не привел весь код к надлежащему виду. Странно почему именно на формате Jpeg возникает данное исключение.
Добавлено через 9 минут Еще вопрос, как сохранить картинку с потерей качества ? мне не нужна картинка с качеством 48 бит/пиксель. Хочу пожать картинку до максимума и передать ее на сервер для уменьшения нагрузки на интернет соединение.
0
|
|
|
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,406
|
|
| 29.10.2016, 13:03 | |
|
Если твоя картинка реально имеет 48 бит на пиксель, то тогда понятно, почему Image не смог её в JPEG сохранить)
Добавлено через 4 минуты Тебе нужно будет "руками" (другого способа я не знаю) перегнать иЗображение в 24-битный формат (это не сложно, но API для этого я не знаю) и сохранить в JPEG с помощью Image.Save(). Данный метод позволяет настраивать качество JPEG-копрессии.
0
|
|
|
7 / 7 / 3
Регистрация: 10.04.2015
Сообщений: 57
|
||||||
| 29.10.2016, 14:21 [ТС] | ||||||
|
Usaga,
Появился такой вопрос, есть метод
0
|
||||||
|
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,406
|
|
| 29.10.2016, 16:16 | |
|
Bespredeliwe, ну там не так много форматов на выбор, поэкспериментируй.
0
|
|
|
7 / 7 / 3
Регистрация: 10.04.2015
Сообщений: 57
|
|
| 29.10.2016, 16:33 [ТС] | |
|
Usaga, Экспериментировал, не один из способов не избавил от ошибки: System.Runtime.InteropServices.ExternalE xception: "В GDI+ возникла ошибка общего вида."
Видимо трабла в чем то другом... Похоже для передачи JPEG мне придется передавать на сериализацию массив байтов, вместо объекта Image.
0
|
|
|
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,406
|
|
| 29.10.2016, 16:40 | |
|
Bespredeliwe, зачем ты вызываешь Bitmap.FromStream, когда можно Image.FromStream?
И ещё, если речь идёт о каком-то самопальном TeamViewer, то рекомендую пошариться по данному форуму, на моей памяти тут приводили очень интересный пример (который работал) по потоковой передаче изображений с рабочего стола. Только кадр передавался не сплошным файлом (как у тебя), а разбивался на маленькие фраменты и передавался через UDP. Добавлено через 25 секунд А вообще, странно, что Image.Save глючит. Оно и в файл не может сохранить?
0
|
|
|
7 / 7 / 3
Регистрация: 10.04.2015
Сообщений: 57
|
|||||||||
| 29.10.2016, 17:14 [ТС] | |||||||||
|
Usaga,
0
|
|||||||||
|
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,406
|
|
| 29.10.2016, 17:19 | |
|
Bespredeliwe, ну тут я тебе помочь не могу, извини. Попробуй в Message сохранять массив байт, а на принимающей стороне восстанавливать изображение...
Хотя, может быть, кто-нибудь чего полезнее подскажет.
0
|
|
|
7 / 7 / 3
Регистрация: 10.04.2015
Сообщений: 57
|
|
| 29.10.2016, 17:19 [ТС] | |
|
Usaga, Я уже так и сделал )
0
|
|
| 29.10.2016, 17:19 | |
|
Помогаю со студенческими работами здесь
13
Ошибка при сериализации - "тип недоступен в силу его уровня защиты" Ошибка при сериализации Ошибка при сериализации Ошибка при сериализации класса AL7_Class_ExtFileInfo Ошибка InvalidOperationException при Xml сериализации Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|