![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
BRS |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 45 Пол: Мужской Репутация: ![]() ![]() ![]() |
Необходимо сохранить в файл прямоугольную картинку (вроде того как через GetImage) в любом расширении, для последующего вывода ее на экран.
Какь? а то с файлами вобще плохо себе представляю как работать |
![]() ![]() |
Altair |
![]()
Сообщение
#2
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
теоретически, хоть в текстовый
![]() а реально, надо так: заволим запись: dd =record color:byte; x,y:word; end; теперь файл такого вида: f: file of dd; теперь каждый пиксель участка сичтываем цвет, и сохраняем координаты. Записываем в файл. Потом читаем следующий. и так делее. Конечно, volvo обязательно оптимизирует что-то здесь, всякие полезные слова добавит ... но и так можно ... :P ;) ![]() Ага, опережу его - можно удрать из записи координаты, если договориться скажем читать и записывать цвета участка экрана в определенном порядке . :D -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Digitalator |
![]()
Сообщение
#3
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 247 Пол: Мужской Репутация: ![]() ![]() ![]() |
А не лучше ли в файл записывать все содержимое полученно по GetImage?
т.е. var x1,y1,x2,y2:word; image:pointer; f:file; .... .... size = imagesize(x1,y1,x2,y2); getmem(image,size); GetImage(... image. .. ) {не помню синтаксис} blockwrite(f, image^, size); вот так примерно (проверить извиняйте не могу ![]() -------------------- |
Altair |
![]()
Сообщение
#4
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Хм, действительно!
![]() ТОгда GetImage(X,y,x1,y1,bufer) - читаем, затем записываем в файл: blockwrite... ну а для чтения считываем изображение и выводим putimage. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
APAL |
![]()
Сообщение
#5
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
Оффтоп.... по делу: 3. Все исходники должны помещаться в теги
Думаю для 1 строчки можно сделать исключение. ![]() Сообщение отредактировано: Oleg_Z - 1.11.2004 17:22 -------------------- |
BRS |
![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 45 Пол: Мужской Репутация: ![]() ![]() ![]() |
Хм - а как гетимадж считать - подробнее давайте
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Код var size, x, y: integer; p: pointer; f: file; ... { запись в файл: } size := imagesize(x1, y1, x2, y2); getmem(p, size); getimage(x1, y1, x2, y2, p^); blockwrite(f, p^, size); x := x1; y := y1; {необходимо для восстановления фрагмента экрана в том же месте} ... { чтение из файла: } blockread(f, p^, size); putimage(x, y, p^, copyput); freemem(p, size); P.S. Такой способ будет работать если запись фрагмента изображения и его чтение происходят в одной программе и программа не прекращает работу между этими действиями... (т.е. не происходит выхода из программы.) Сообщение отредактировано: volvo - 1.11.2004 13:54 |
Digitalator |
![]()
Сообщение
#8
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 247 Пол: Мужской Репутация: ![]() ![]() ![]() |
кстати, на сколько я помню, если вывести первые 15 байт из массива взятого по getimage, то в них можно обнаружить кое-какие полезности, в часности dx ,dy , а может и еще че-нить
![]() -------------------- |
BRS |
![]()
Сообщение
#9
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 45 Пол: Мужской Репутация: ![]() ![]() ![]() |
необходимо чтоб этот файл можно было при послед. использовании проги использовать
(типа граф. редактор) |
Digitalator |
![]()
Сообщение
#10
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 247 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата при послед. использовании проги использовать Всмысле чтоб подгружать в любое время и любой подобный файл можно было? ну так в чем проблема - читаешь его блокридом как показано выше было и выводишь куда надо... потом сохраняешь куда надо. - что непоноятно? -------------------- |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Тогда можно создавать вместе с файлом, содержащим само изображение, еще один маленький файлик (допустим, с тем же именем, но с другим расширением), в котором будут храниться только координаты для вывода на экран ...
Digitalator Проблема в том, что при выходе из программы он потеряет информацию о том, где первоначально находился фрагмент изображения ... :yes: Сообщение отредактировано: volvo - 1.11.2004 20:47 |
Digitalator |
![]()
Сообщение
#12
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 247 Пол: Мужской Репутация: ![]() ![]() ![]() |
зачем много файлов делать? - это неудобно. в начало все того же добавить координаты. но зачем вообще координаты? я так полагаю, если в том же месте выводить, то координаты заранее известны, а если все время в разном - то они не нужны в файле т.к. будут расчитываться.....
-------------------- |
![]() ![]() |
![]() |
Текстовая версия | 27.07.2025 11:03 |