Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ сохранить изображение в .bmp

Автор: Тимон 10.06.2007 0:32

Превед Красавчеги!
Кто нибудь вообще знает как можно изображение, которое я вывел с помощью Graph сохранить в файле
с разрешением BMP? Подскажите пожалуйста, только, если не трудно, объясните толком.А то я по другому ни хрена не понимаю?

 ! 
Красавчеги, медведы и креведки на удафф.ком и башорге. Нам и без них хорошо. Читай правила.


Автор: volvo 10.06.2007 0:44

Качаешь отсюда: http://forum.pascal.net.ru/index.php?s=&showtopic=4533&view=findpost&p=38204
модуль BMP_PLUS, подключаешь его к программе, и когда твоя картинка отрисована полностью - вызываешь Save_BMP...

Автор: Тимон 11.06.2007 14:48

Понятно.
Но тогда другой вопрос у меня возникает?
Можно ли в Паскале 7.0 вывести хотя бы 16-битное изображение на экран из bmp файла?
Если нет, то какой компилятор посоветуете?

Автор: volvo 11.06.2007 15:42

Можно и больше 256 цветов... Когда-то были драйверы SVGA32K.BGI и SVGA64K.BGI, можешь попробовать Google, наверняка где-то сохранились и тестовые примеры...

Автор: Ozzя 11.06.2007 16:06

http://pascal.sources.ru/graph/svga256.htm

Автор: Тимон 12.06.2007 18:35

Да но ведь если я беру больше 256 цветов, то процедуры, которые ты указал для вывода изображения не работают. Они пашут только под 8 битной графикой максимум. Что делать?

Автор: volvo 12.06.2007 20:38

Цитата
Что делать?
Повторяю: Go To Google, ищи по тем словам, которые я привел выше примеры использования

Автор: Ozzя 13.06.2007 9:49

http://pascal.sources.ru/graph/psp23.htm
hicolor/truecolor режимы + bmp

Автор: Тимон 14.06.2007 0:52

что -то я не понял какую именно процедуру или функцию ты предлагаешь. Если функцию PutBmp из модуля
Images, так там изображение загружается из памяти. А мне то нужно из файла.
Можешь мне тогда объяснить как изображение в память засунуть?

Автор: Ozzя 14.06.2007 11:15

 var BMPPtr: Pointer;

...
BMPPtr:=LoadFile('чё_нить.bmp');
PutBMP(0,0,BMPPtr,false);

Автор: Тимон 14.06.2007 16:44

Короче я сделал всё как ты сказал.
Вот у меня получился такой код:

 
Uses Graph,Images,Memplus;
var BMPPtr: Pointer;
gd,gm:integer;
begin
Gd:=instaluserdriver ('svga64k',nil);
gm:=3;
InitGraph (gd,gm,'');
BMPptr:= Loadfile ('1.bmp');
PutBmp (0,0,BMPptr,false);
readln;
closeGraph;
end.


Вот только почему то всё равно ни хрена не работает. Где Ошибка?
[/quote]

Автор: Ozzя 14.06.2007 16:49

В 1-й строке.
Должно быть

 uses MegaGraf,Images,MemPlus,Keyboard,Fonts,i80386;

Потому что, ты теперь работаешь не со стандарным Graph'ом, а с библиотекой PSP.

Установка режима так
  if SetSVGAMode(640,480,grSVGA64k) then 
// тут твоя графика

Автор: Тимон 15.06.2007 2:11

Вот почему то именно таким образом он выводит изображение 256 бит
на экран.Если я меняю режим 6 на 7 (grSVGA16M) (потому что мне нужно вывести 24 битный рисунок) все это пахать почему то перестает.Что за х.....?

 Uses MegaGraf,Images,Memplus,Keyboard,Fonts,i80386;
var BMPPtr:pointer;
begin
BMPPtr:=loadfile ('t-256.bmp');
InitVBE;
SetMCGAMode;
if SetSVGAMode (640,480,6) then begin
PutBmp (0,0,BMPPtr,false);
end;
readln;
end.





Автор: Ozzя 15.06.2007 10:43

Если я меняю режим 6 на 7 (grSVGA16M) (потому что мне нужно вывести 24 битный рисунок)

Вот тут я помочь ничем не смогу. Ибо ни одна из моих видеокарт уже не держит vesa 1.2. И твою программу с твоими рисунками проверить не смогу.

Автор: Тимон 15.06.2007 13:41

наконец то! Удалось вывести 16 битное изображение. Черт с этим 24-битным... Спасибо тебе Ozzя за помощь огромное!!!