|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.05.2012, 00:04 | #51 | |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Цитата:
Я лишь показал, как перейти на первый байт изображения, не считывая смещение, и не зная, есть палитра или нет. Без разницы как написать так - f.seek(w*h*3,soEnd) или так f.seek(d.size-h*w*3,soBeginning). Палитру в изображении с 24-байтном формате пикселя не видел, т.к. не часто приходится разбирать BMP ручками.
Если помог, проси поставить минус. Будь оригинален!
|
|
29.05.2012, 07:47 | #52 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
На мой взгляд, вероятность, что кто-то что-то допишет к концу файла (кажется, здесь недавно обсуждалось, как можно запихнуть архив в картинку, и пришли к выводу, что просто дописывая zip в конец файла), ничуть не меньше, чем обнаружить палитру в труколорном изображении.
А я, наоборот, предпочитаю работать с BMP ручками. Притом, не только, когда читаю файл, но и когда сам генерирую то или иное изображение. PS. Да, еще лишние хвосты у файлов получаются после восстановления при крахе винчестера. В общем, отсчитывать от конца файла ненадежно. Последний раз редактировалось s-andriano; 29.05.2012 в 07:52. |
29.05.2012, 09:00 | #53 | |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Цитата:
Но у ТС будут свежеиспеченные снимки, поэтому не думаю, что кто-то успеет залить в конец файла что-то свое.
Если помог, проси поставить минус. Будь оригинален!
|
|
03.06.2012, 14:13 | #54 |
Пользователь
Регистрация: 14.04.2012
Сообщений: 41
|
Так Можно увидеть окончательно работающий код? не один из здесь приведенныйх не работает( Желательно использовать TFilestream и задать палитру.Код должен работать с ЛЮБЫМ бмп!. И ребята будте по проще почти ничего не понял из вашего разговора!
Последний раз редактировалось FoggySpurs; 03.06.2012 в 14:16. |
03.06.2012, 15:52 | #55 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Условие необходимости работы с ЛЮБЫМ bmp достаточно сильное. И в исходной постановке никак не фигурирующее. Более того, в теме рассматривалась возможность работы ТОЛЬКО с 24-битным bmp, и спор был лишь о том, что должна делать программа при попытке открыть что-то другое - писать сообщение, что она с таким не работает или вылетать по ошибке. В общем, думаю, если Вам нужен готовый код - прямая дорога в фриланс. Никто не будет за просто так делать код, который может работать: 1. С bmp любого размера, в т.ч. превышающие 2 Гб. 2. С bmp любого формата. Более того, если по п.2 можно найти как готовые примеры, так и библиотечные процедуры, то по п.1 неизбежно должен встать вопрос о критериях оптимизации, т.к. обработка больших массивов данных требует и большого времени. В целом тема содержит лишь советы, что и как лучше делать. Хотите делать, но не понимаете, как - задавайте конкретные вопросы. Хотите получить готовый код - заказывайте работу за деньги (ко мне обращаться не надо - я софт за деньги не пишу). |
|
03.06.2012, 17:13 | #56 |
Пользователь
Регистрация: 14.04.2012
Сообщений: 41
|
Имеем изображение 4 бита на пиксель.размер 12859/8201 пикс. использует 15 цветовых индексов в политре. смещение в байтах от начала 114.
заганяю файл в поток: sL := TFileStream.Create(OpenDialog1.File name,fmOpenRead); как написать функц seek и цикл ,что бы отрисовать только каждую 14 строку и каждый 20 пиксель в ней??? |
03.06.2012, 17:18 | #57 |
Пользователь
Регистрация: 14.04.2012
Сообщений: 41
|
Если бы были готовые примеры то я бы здесь не писал! и что такое фриланс?
|
03.06.2012, 18:45 | #58 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Т.е. Вы хотите по сути сжать изображение в 14 раз по одной оси и в 20 - по другой?
Я бы советовал читать строки целиком и затем выбирать из них нужные полубайты. Ну а 13 строк можно пропускать и посредством seek. Надеюсь, длину строки и требуемые смещения Вы сможете подсчитать самостоятельно. Кстати, не понимаю, зачем Вам TFileStream. На мой взгляд, проще и быстрее пользоваться обычным file. В конце концов, TFileStream - лишь обертка для обычных файловых операций. |
03.06.2012, 18:47 | #59 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Раздел этого форума: http://programmersforum.ru/forumdisplay.php?f=29
|
03.06.2012, 18:57 | #60 | |
Пользователь
Регистрация: 14.04.2012
Сообщений: 41
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Открыть файл, разделить ячейку на 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 |