Member 13915301 Ответов: 2

Как конвертировать изображения .tga в файл .png


я пытаюсь сделать конвертер изображений .tga в c#, и я получаю это сообщение:
Система.OutOfMemoryException: "из памяти".

Что я уже пробовал:

Система.Рисование.Образ образ = система.Рисование.Изображение.FromFile(@"C:thefiles/thing.tga");
изображение.Сохранить(@"C:\Users\Me\Desktop\imagetest.png",Система.Рисование.Изображений.ImageFormat.Png);

MadMyche

Какая строка выдает эту ошибку?

Member 13915301

первая строка

2 Ответов

Рейтинг:
8

Jochen Arndt

Просто для полноты картины.

Тип исключения / сообщение об ошибке вводит в заблуждение, но документировано:

Замечания

Управляемый GDI+ имеет встроенные кодеры и декодеры, которые поддерживают следующие типы файлов:
формат BMP
GIF
JPEG
формат PNG
РАЗМОЛВКА

Файл остается заблокированным до тех пор, пока изображение не будет удалено.

Если файл не имеет допустимого формата изображения или если GDI+ не поддерживает пиксельный формат файла, этот метод создает исключение OutOfMemoryException.
Таким образом, образы TGA изначально не поддерживаются и требуют обработки собственным кодом или с помощью библиотеки.


Eric Lynch

Вау, кто-то действительно задокументировал это, не потратив времени сказать: "Эй, давайте изменим это на исключение, которое описывает, что пошло не так"...грустно :)

Jochen Arndt

Этого никогда не произойдет, потому что создание нового исключения может позволить существующим приложениям завершиться, если они не поймают универсальные исключения (System.Исключение и система.SystemException), но только конкретные исключения, которые могут возникнуть.

Eric Lynch

Да, теперь я понимаю, что он застрял. Однако я надеялся, что, возможно, кто-то написал документацию до того, как они ее выпустили. В этом случае они могли бы исправить его до выпуска. Я знаю, я знаю...новая концепция на самом деле написание документации для продукта перед выпуском...кроме того, никогда не произойдет :)

Jochen Arndt

Виновником является функция GDI+ GdipLoadImageFromFile (), которая возвращает код GpStatus 3 (OutOfMemory) при сбое загрузки изображения из-за неподдерживаемого формата изображения или поврежденного файла.

Существует код GpStatus 13 (UnknownImageFormat). Я предполагаю, что это была опечатка в исходном коде, которая была обнаружена слишком поздно.

phil.o

Несколько месяцев назад мы обсуждали этот же вопрос.
К сожалению, управляемый gdi+ довольно ужасен, имхо. Многое осталось позади.

Eric Lynch

Это смешно...старая отговорка "недостающая цифра". Это, по крайней мере, ставит его в prspective..ой, пропустил букву "е"...серьезно, спасибо, что скрасил мой день!

Рейтинг:
15

Eric Lynch

Я не думаю, что изображения тарги поддерживаются изначально. Возможно, вы захотите проверить это .Чистый образ Тарга читателя[^] для чтения части проблемы.


Member 13915301

Палома говорит, что его не существует в текущем содержании

Eric Lynch

какой шаг вы делаете, когда "оно" говорит это, и что такое "оно"?

MadMyche

Вы захватили этот проект или просто используете команды без него?