|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.05.2012, 00:20 | #41 |
Пользователь
Регистрация: 14.04.2012
Сообщений: 41
|
|
27.05.2012, 00:31 | #42 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Код:
Если помог, проси поставить минус. Будь оригинален!
Последний раз редактировалось Rin; 27.05.2012 в 04:54. |
27.05.2012, 00:40 | #43 |
Пользователь
Регистрация: 14.04.2012
Сообщений: 41
|
что за ф с долларами? зачем выяснять длинну и ширину если их можно взять из шапки!? переходим на байт, с которого начинается первая сторка--- первая строка где в файле 1-я или и изображении??
|
27.05.2012, 04:57 | #44 | |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Цитата:
На счет TMemoryStream. Как посоветовал Аватар, и я с ним соглашаюсь - нужно использовать TFileStream, т.к. файл не загружается в оперативную память. При использовании же TBitmap и TMemoryStream файл загружается в оперативку.
Если помог, проси поставить минус. Будь оригинален!
Последний раз редактировалось Rin; 27.05.2012 в 05:02. |
|
27.05.2012, 09:42 | #45 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
[QUOTE=Rin;1051229]А кто-нибудь может мне объяснить, зачем вот это:
Код:
Код:
Да и вместо Код:
Код:
|
27.05.2012, 10:09 | #46 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
По поводу кода в #42. Для FileStream (и других Stream) вместо по-байтного чтения можно (и нужно) пользоваться чтением в буфер. Например для чтения DWORD (при этом нет необходимости кучу сдвигов делать)
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 27.05.2012 в 10:20. |
28.05.2012, 06:08 | #47 | |||
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Цитата:
Цитата:
Цитата:
Согласно Вики, при 24-битном формате пикселя компрессии нет, и палитры быть не должно.
Если помог, проси поставить минус. Будь оригинален!
|
|||
28.05.2012, 13:35 | #48 | |||
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Цитата:
Поэтому лично я, работая в BMP, предпочитаю отдать данные системе тоже в формате BMP, чтобы уже она думала, нужно ли что-то куда-то перекодировать, и как именно. Кстати, видеокарта перекодирует цвет аппаратно, не используя ресурс ЦП, так что с точки зрения программы это вообще не занимает времени. Но в любом случае - перестановка байтов в ОП - операция существенно более быстрая, чем обмен данными с диском. Цитата:
Но в любом случае - правильная программа должна корректно работать всегда, даже с некорректными данными. Поэтому и нужны дополнительные проверки. Согласитесь, гораздо лучше, если программа будет выводит мессаджбокс с фразой "Программа поддержтвает только изображения True Color (24 bpp)", чем если будет вылетать по неясной ошибке при попытке открытия файла. И еще: "палитры быть не должно" и "палитры нет" - разные вещи. Последний раз редактировалось s-andriano; 28.05.2012 в 13:40. |
|||
28.05.2012, 14:36 | #49 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Вспомнил, в формате JPG длина APPn имеет 2 байта, и имеет обратный порядок байт. Считывая длину APP, не мог понять откуда берутся такие огромные цифры.
Можно перейти на 29 байт, считать его, и тем самым узнать какая глубина цвета. На кой в 24bbp хранить палитру, ведь на каждую компоненту цвета приходится ровно 1 байт, следовательно компрессии делать не надо. Отсюда вывод, что палитры в True Color нет. Смещение, от которого начинается изображение нам и не нужно, т.к. мы будет считывать с конца файла, и чтобы перейти на первый байт изображения нужно будет написать f.seek(w*h*3,soEnd). На счет swap'a байт в ОП и считывания байт с харда я согласен. Про работу проги при некорректных данных тоже согласен.
Если помог, проси поставить минус. Будь оригинален!
|
28.05.2012, 19:14 | #50 | |||
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Intel - не единственная архитектура, и некоторые форматы файлов первоначально разрабатывались не для нее. Бывают и более сложные случаи, когда часть полей имеет один порядок байтов, а часть - другой. Цитата:
Верный вывод: "она там не нужна". Но формату наличие палитры в таких файлах не противоречит, и на практике такие файлы встречаются. Цитата:
|
|||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Открыть файл, разделить ячейку на 1000, сохранить файл, закрыть файл. Как? | Ник Харди | Microsoft Office Excel | 7 | 30.01.2012 18:47 |
Не заливается на ФТП большой файл | ramzes777 | Работа с сетью в Delphi | 3 | 26.10.2011 10:19 |
Разбить большой файл на более мелкие | Sat_Kelman | Microsoft Office Excel | 4 | 18.03.2011 13:06 |
отдавать большой файл с фтп | TaTT DoGG | PHP | 5 | 03.07.2009 10:34 |
ActiveX не хочет читать большой файл | Miklek | Общие вопросы Delphi | 0 | 02.04.2009 11:55 |