IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Работа с файлами
BRS
сообщение 31.10.2004 19:59
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


Необходимо сохранить в файл прямоугольную картинку (вроде того как через GetImage) в любом расширении, для последующего вывода ее на экран.

Какь? а то с файлами вобще плохо себе представляю как работать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 11)
Altair
сообщение 31.10.2004 20:13
Сообщение #2


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


теоретически, хоть в текстовый smile.gif
а реально, надо так:
заволим запись:
dd =record
color:byte;
x,y:word;
end;
теперь файл такого вида:
f: file of dd;

теперь каждый пиксель участка сичтываем цвет, и сохраняем координаты.
Записываем в файл. Потом читаем следующий. и так делее.
Конечно, volvo обязательно оптимизирует что-то здесь, всякие полезные слова добавит ... но и так можно ... :P ;) smile.gif

Ага, опережу его - можно удрать из записи координаты, если договориться скажем читать и записывать цвета участка экрана в определенном порядке . :D


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Digitalator
сообщение 31.10.2004 23:18
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 247
Пол: Мужской

Репутация: -  1  +


А не лучше ли в файл записывать все содержимое полученно по 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);

вот так примерно (проверить извиняйте не могу sad.gif )


--------------------
In byte we trust
ICQ World.ru
mail[dog]digitalator[dot]com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 1.11.2004 6:53
Сообщение #4


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Хм, действительно! rolleyes.gif

ТОгда GetImage(X,y,x1,y1,bufer) - читаем,
затем записываем в файл:
blockwrite...
ну а для чтения считываем изображение и выводим putimage.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 1.11.2004 10:55
Сообщение #5


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Оффтоп.... по делу: 3. Все исходники должны помещаться в теги

Думаю для 1 строчки можно сделать исключение. smile.gif

Сообщение отредактировано: Oleg_Z - 1.11.2004 17:22


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BRS
сообщение 1.11.2004 13:32
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


Хм - а как гетимадж считать - подробнее давайте
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 1.11.2004 13:47
Сообщение #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
сообщение 1.11.2004 20:24
Сообщение #8


Бывалый
***

Группа: Пользователи
Сообщений: 247
Пол: Мужской

Репутация: -  1  +


кстати, на сколько я помню, если вывести первые 15 байт из массива взятого по getimage, то в них можно обнаружить кое-какие полезности, в часности dx ,dy , а может и еще че-нить rolleyes.gif


--------------------
In byte we trust
ICQ World.ru
mail[dog]digitalator[dot]com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BRS
сообщение 1.11.2004 20:36
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


необходимо чтоб этот файл можно было при послед. использовании проги использовать

(типа граф. редактор)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Digitalator
сообщение 1.11.2004 20:40
Сообщение #10


Бывалый
***

Группа: Пользователи
Сообщений: 247
Пол: Мужской

Репутация: -  1  +


Цитата
при послед. использовании проги использовать

Всмысле чтоб подгружать в любое время и любой подобный файл можно было?
ну так в чем проблема - читаешь его блокридом как показано выше было и выводишь куда надо... потом сохраняешь куда надо. - что непоноятно?


--------------------
In byte we trust
ICQ World.ru
mail[dog]digitalator[dot]com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 1.11.2004 20:43
Сообщение #11


Гость






Тогда можно создавать вместе с файлом, содержащим само изображение, еще один маленький файлик (допустим, с тем же именем, но с другим расширением), в котором будут храниться только координаты для вывода на экран ...

Digitalator
Проблема в том, что при выходе из программы он потеряет информацию о том, где первоначально находился фрагмент изображения ... :yes:

Сообщение отредактировано: volvo - 1.11.2004 20:47
 К началу страницы 
+ Ответить 
Digitalator
сообщение 1.11.2004 20:48
Сообщение #12


Бывалый
***

Группа: Пользователи
Сообщений: 247
Пол: Мужской

Репутация: -  1  +


зачем много файлов делать? - это неудобно. в начало все того же добавить координаты. но зачем вообще координаты? я так полагаю, если в том же месте выводить, то координаты заранее известны, а если все время в разном - то они не нужны в файле т.к. будут расчитываться.....


--------------------
In byte we trust
ICQ World.ru
mail[dog]digitalator[dot]com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 27.07.2025 11:03
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"