| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Работа с BMP |
| Автор: Golden Hands 29.6.2006, 01:40 | ||
Есть примерно такой код для обработки списка файлов:
При загрузке некоторых файлов возникает исключение (неправильный формат). Хотя все файлы формата BMP, разница лишь в том, что получены они разными программами. В чем суть проблемы? |
| Автор: Mechanic 29.6.2006, 02:21 | ||
| Не должно бы. А ежели поставить
И потом внимательно посмотреть, что же за файлы не открываются? |
| Автор: Kesh 29.6.2006, 08:42 |
| Дело в том, что битмапы кодируются двумя способами... Есть RGB encoding, когда каждый пиксел кодируется отдельно 3 цветами, а есть Length encoding - кодирутся последовательности байт. Length encoding позволяет сократить размеры Bitmapa, но не переваривается в Delphi... Поэтому все, что тебе нужно - пересохранить картинки в RGB Encoding |
| Автор: Alexeis 29.6.2006, 12:11 |
| Kesh, более того bmp может быть в 5 форматах сжатия 1) RGB - несжатый 2) RLE 3) PNG 4) JPG 5) BI_BITFIELDS - несжатый Чуть более подробно можно почитать в мой статье http://forum.vingrad.ru/index.php?showtopic=94227&hl=%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82,and,bmp Windows XP - умеет работать со всеми 5, а делфи нет Кроме того врядли TBitmap разбират изображения имеющие полный заголовок BITMAPV5HEADER |
| Автор: Golden Hands 29.6.2006, 16:11 |
Ручками нереально. А потоково в Delphi нельзя из-за сабжа. Замкнутый круг. Значит, никак не взять их в Delphi? Может быть существует готовый компонент? |
| Автор: Alexeis 29.6.2006, 16:44 |
| Golden Hands, есть вариант - поискать на torry.net - более продвинутый компонент для работы с bmp-шками (таких на самом деле очень много). Либо написать на api свой конвертер, в этом случае есть все шансы, что он не будет работать на других windows отличных от XP, правда насколько я знаю даже в XP png и jpeg не полностью поддерживаются. RLE - не поддерживается разве, что win3.11 Может просто определять, что файл не в том формате и сообщить об этом пользователю! (на самом деле это легко определить и без всяких TBitmap) |
| Автор: Golden Hands 29.6.2006, 21:35 |
Это конечно... |
| Автор: Golden Hands 30.6.2006, 01:54 |
| Компонент TBitmapPlus решил проблему. |