| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > [VC#] Конвертация/Расконвертация .tga файлов |
| Автор: MuForum 15.8.2008, 13:31 |
| Доброе время суток! - Столкнулся со следующей проблемой, мне необходимо показать содержимое '*.tga' файла в компоненте 'PictureBox'. - Поискав информацию в http://google.com, я понял, что '.tga' данные могут храниться в двух форматах: 'Запакованные/Не запакованные'. - Насколько я понял, так отличить в каком формате хранятся данные можно по 3-ему байту, который в свою очередь может принимать 9 вариантов. # Задача: Отобразить содержимое '*.tga' файла в компоненте 'PictureBox'. (Класс Image) # Спецификация формата: http://ru.wikipedia.org/wiki/TGA, http://www.fileformat.info/format/tga/, http://local.wasp.uwa.edu.au/~pbourke/dataformats/tga/, http://www.gamedev.ru/articles/?id=70116, http://www.dca.fee.unicamp.br/~martino/disciplinas/ea978/tgaffs.pdf; |
| Автор: MuForum 15.8.2008, 15:41 | ||
# for all - Сделал, но подпрограмма не работает. Вылетает исключение: 'Недопустимый параметр.'
P.S. -> Где косяк? В каком месте нужно руки себе отрубить? =) |
| Автор: Wanderer2019 15.8.2008, 16:29 |
| MuForum, мне кажется .NET не поддерживает тга по умолчанию и необходимо пользоваться какими нибудь сторонними библиотеками или например той же DirectX. |
| Автор: MuForum 16.8.2008, 14:04 | ||
А мне кажется, что ты ошибаешься, так как я видел программы написаные на Dot .NET, которые работают с '*.tga' файлами. - Например программа 'Paint.NET', и таких не мало... - Если есть голова и руки, то всё можно сделать. P.S. -> MSDN: http://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox.aspx; |
| Автор: MuForum 17.8.2008, 17:25 | ||||
| # for all - Парни, ну ёмаё, помогите хоть советом... - Я сделал чтение не запакованного '*.tga' файла. (То есть, у которого 3 байт равен 2)
- Всё вроде отрабатывает как надо, до момента записи изображения в класс 'Image', то есть вот на этой строчке уходит в исключение:
- Что я не правильно делаю? P.S. -> Я прикрепил архив, в котором 4 не запакованных '*.tga' файла. |
| Автор: MuForum 18.8.2008, 10:56 | ||||
| # for all - Парни, и у меня получилось сделать загрузку '*.tga' файла я ппц рад, то теперь осталось решить проблему со флипом. - на Wiki Написано следующее:
# Вопрос: Как проверить эти биты?
- Так не хочет =( |
| Автор: Partizan 18.8.2008, 10:58 | ||
MuForum, ну возможно в вики биты считают слева направо, поэтому стоит попробовать так:
8-4 и 8-5 можно заменить на 4 и 3 соответственно ) для ясности просто привёл) |
| Автор: MuForum 18.8.2008, 11:52 | ||
# for all - Парни, немного помучившись, вот получилась функция для отображения не запакованного '*.tga' файла.
# Благодарности: Marcus[VPF], zot17[GameDev.Ru], Partizan[VPF]; |
| Автор: MuForum 30.4.2009, 14:02 | ||
| # for all - Прочитал немало литературы, статей, форумов по поводу работы с классами Image, Bitmap и т.д., и почти везде говорят, что использование функции SetPixel() сильно сказывается на производительности. Я на сколько смог оптимизировал алгоритм обработки массива в изображение, но может у кого-то возникнут ещё какие-то идеи по поводу оптимизации.
Я читал на форумах про класс BitmapData, но не совсем догоняю, как его прикрутить в моём случае. -- И будет ли с него вообще эффект? P.S. -> Если у кого-то есть какие-то предложения, советы, с радостью выслушаю. |
| Автор: Rififi 30.4.2009, 14:59 |
| MuForum, P.S. -> Если у кого-то есть какие-то предложения, советы, с радостью выслушаю. Умеет загружать BigTIFF (>4Gb)? Умеет парсить и извлекать exif-информацию? |
| Автор: MuForum 30.4.2009, 15:14 |
| 10, Rififi - Вопрос был именно по TAGRA формату и именно по моему коду... - Причём тут то, что ты написал... (Читай внимательнее сообщения и заголовок темы) |
| Автор: MuForum 1.5.2009, 13:22 | ||||
| # for all - Переделал класс работы с *.tga форматом под класс BitmapData. -- Хочу заметить, что скорость обработки данных возросла примерно в 12 раз! -- Разница более чем существенная. -- Благодарю всех, кто принимал участие в данной теме, опубликовываю получившейся результат. # Результаты тестирования:
P.S. -> Если у кого-то есть ещё какие-то советы/предложения по оптимизации данного класса, высказывайте, буду благодарен. |
| Автор: MuForum 10.5.2009, 12:46 | ||||
| # for all - Реализовал очередную оптимизацию для чтения *.tga файлов. 1. Если файл записан слево на право, то прирост в скорости от оптимизации ~ 23%. 2. Если файл сжат алгоритмом RLE, то прирост в скорости от оптимизации ~ 34% -- + ещё 23% если файл записан слево на право, итого 56%. # Тестирование:
P.S. -> Если у кого-то есть ещё какие-то предложения по оптимизации, буду рад выслушать. |