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

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

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

 
 Ответить  Открыть новую тему 
> Работа с файлами
сообщение
Сообщение #1


Новичок
*

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

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


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

Какь? а то с файлами вобще плохо себе представляю как работать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


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

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

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


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

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

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


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


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

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

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


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

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


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


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

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

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


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

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

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


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


Новичок
*

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

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


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


Бывалый
***

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

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


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


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


Новичок
*

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

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


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

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


Бывалый
***

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

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


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

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


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


Гость






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

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

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


Бывалый
***

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

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


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


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

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

 





- Текстовая версия 11.01.2025 6:01
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name