Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2012, 00:04   #51
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Цитата:
Это неоптимальный вариант. Гораздо быстрее будет читать, начиная с начала.
С этим я согласен.
Я лишь показал, как перейти на первый байт изображения, не считывая смещение, и не зная, есть палитра или нет. Без разницы как написать так - f.seek(w*h*3,soEnd) или так f.seek(d.size-h*w*3,soBeginning).
Палитру в изображении с 24-байтном формате пикселя не видел, т.к. не часто приходится разбирать BMP ручками.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 29.05.2012, 07:47   #52
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

На мой взгляд, вероятность, что кто-то что-то допишет к концу файла (кажется, здесь недавно обсуждалось, как можно запихнуть архив в картинку, и пришли к выводу, что просто дописывая zip в конец файла), ничуть не меньше, чем обнаружить палитру в труколорном изображении.

А я, наоборот, предпочитаю работать с BMP ручками. Притом, не только, когда читаю файл, но и когда сам генерирую то или иное изображение.

PS. Да, еще лишние хвосты у файлов получаются после восстановления при крахе винчестера. В общем, отсчитывать от конца файла ненадежно.

Последний раз редактировалось s-andriano; 29.05.2012 в 07:52.
s-andriano вне форума Ответить с цитированием
Старый 29.05.2012, 09:00   #53
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Цитата:
кажется, здесь недавно обсуждалось, как можно запихнуть архив в картинку, и пришли к выводу, что просто дописывая zip в конец файла
Вот про этот случай я и упоминал. Там был формат jpg, и в APPn нужно было записать архив. Самым простым методом было добавить в конец, т.к. в конце файла стоит маркер, при считывании которого программы просмотра и редактирования изображений завершают работу и показывают картинку.
Но у ТС будут свежеиспеченные снимки, поэтому не думаю, что кто-то успеет залить в конец файла что-то свое.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 03.06.2012, 14:13   #54
FoggySpurs
Пользователь
 
Регистрация: 14.04.2012
Сообщений: 41
По умолчанию

Так Можно увидеть окончательно работающий код? не один из здесь приведенныйх не работает( Желательно использовать TFilestream и задать палитру.Код должен работать с ЛЮБЫМ бмп!. И ребята будте по проще почти ничего не понял из вашего разговора!

Последний раз редактировалось FoggySpurs; 03.06.2012 в 14:16.
FoggySpurs вне форума Ответить с цитированием
Старый 03.06.2012, 15:52   #55
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от FoggySpurs Посмотреть сообщение
Так Можно увидеть окончательно работающий код? не один из здесь приведенныйх не работает( Желательно использовать TFilestream и задать палитру.Код должен работать с ЛЮБЫМ бмп!. И ребята будте по проще почти ничего не понял из вашего разговора!
Гм...
Условие необходимости работы с ЛЮБЫМ bmp достаточно сильное. И в исходной постановке никак не фигурирующее.
Более того, в теме рассматривалась возможность работы ТОЛЬКО с 24-битным bmp, и спор был лишь о том, что должна делать программа при попытке открыть что-то другое - писать сообщение, что она с таким не работает или вылетать по ошибке.

В общем, думаю, если Вам нужен готовый код - прямая дорога в фриланс. Никто не будет за просто так делать код, который может работать:
1. С bmp любого размера, в т.ч. превышающие 2 Гб.
2. С bmp любого формата.

Более того, если по п.2 можно найти как готовые примеры, так и библиотечные процедуры, то по п.1 неизбежно должен встать вопрос о критериях оптимизации, т.к. обработка больших массивов данных требует и большого времени.

В целом тема содержит лишь советы, что и как лучше делать.
Хотите делать, но не понимаете, как - задавайте конкретные вопросы.
Хотите получить готовый код - заказывайте работу за деньги (ко мне обращаться не надо - я софт за деньги не пишу).
s-andriano вне форума Ответить с цитированием
Старый 03.06.2012, 17:13   #56
FoggySpurs
Пользователь
 
Регистрация: 14.04.2012
Сообщений: 41
По умолчанию

Имеем изображение 4 бита на пиксель.размер 12859/8201 пикс. использует 15 цветовых индексов в политре. смещение в байтах от начала 114.
заганяю файл в поток:
sL := TFileStream.Create(OpenDialog1.File name,fmOpenRead);
как написать функц seek и цикл ,что бы отрисовать только каждую 14 строку и каждый 20 пиксель в ней???
FoggySpurs вне форума Ответить с цитированием
Старый 03.06.2012, 17:18   #57
FoggySpurs
Пользователь
 
Регистрация: 14.04.2012
Сообщений: 41
По умолчанию

Если бы были готовые примеры то я бы здесь не писал! и что такое фриланс?
FoggySpurs вне форума Ответить с цитированием
Старый 03.06.2012, 18:45   #58
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Т.е. Вы хотите по сути сжать изображение в 14 раз по одной оси и в 20 - по другой?
Я бы советовал читать строки целиком и затем выбирать из них нужные полубайты.
Ну а 13 строк можно пропускать и посредством seek.
Надеюсь, длину строки и требуемые смещения Вы сможете подсчитать самостоятельно.

Кстати, не понимаю, зачем Вам TFileStream. На мой взгляд, проще и быстрее пользоваться обычным file. В конце концов, TFileStream - лишь обертка для обычных файловых операций.
s-andriano вне форума Ответить с цитированием
Старый 03.06.2012, 18:47   #59
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от FoggySpurs Посмотреть сообщение
и что такое фриланс?
Раздел этого форума: http://programmersforum.ru/forumdisplay.php?f=29
s-andriano вне форума Ответить с цитированием
Старый 03.06.2012, 18:57   #60
FoggySpurs
Пользователь
 
Регистрация: 14.04.2012
Сообщений: 41
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Т.е. Вы хотите по сути сжать изображение в 14 раз по одной оси и в 20 - по другой?
Я бы советовал читать строки целиком и затем выбирать из них нужные полубайты.
Ну а 13 строк можно пропускать и посредством seek.
Надеюсь, длину строки и требуемые смещения Вы сможете подсчитать самостоятельно.

Кстати, не понимаю, зачем Вам TFileStream. На мой взгляд, проще и быстрее пользоваться обычным file. В конце концов, TFileStream - лишь обертка для обычных файловых операций.
Когда изображение большое а аперативная память компа маленькая скажем 512 мб...мы не можем сканировать все изо!( Как это сделать посредством seek? я не могу перевести задачу с русского языка на язык делфи!
FoggySpurs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открыть файл, разделить ячейку на 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