Помощь - Поиск - Пользователи - Календарь
Полная версия: сохранить изображение в .bmp
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Тимон
Превед Красавчеги!
Кто нибудь вообще знает как можно изображение, которое я вывел с помощью Graph сохранить в файле
с разрешением BMP? Подскажите пожалуйста, только, если не трудно, объясните толком.А то я по другому ни хрена не понимаю?

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

volvo
Качаешь отсюда: Модули для вывода графики. (bmp, Pcx ...)
модуль BMP_PLUS, подключаешь его к программе, и когда твоя картинка отрисована полностью - вызываешь Save_BMP...
Тимон
Понятно.
Но тогда другой вопрос у меня возникает?
Можно ли в Паскале 7.0 вывести хотя бы 16-битное изображение на экран из bmp файла?
Если нет, то какой компилятор посоветуете?
volvo
Можно и больше 256 цветов... Когда-то были драйверы SVGA32K.BGI и SVGA64K.BGI, можешь попробовать Google, наверняка где-то сохранились и тестовые примеры...
Тимон
Да но ведь если я беру больше 256 цветов, то процедуры, которые ты указал для вывода изображения не работают. Они пашут только под 8 битной графикой максимум. Что делать?
volvo
Цитата
Что делать?
Повторяю: Go To Google, ищи по тем словам, которые я привел выше примеры использования
Ozzя
http://pascal.sources.ru/graph/psp23.htm
hicolor/truecolor режимы + bmp
Тимон
что -то я не понял какую именно процедуру или функцию ты предлагаешь. Если функцию PutBmp из модуля
Images, так там изображение загружается из памяти. А мне то нужно из файла.
Можешь мне тогда объяснить как изображение в память засунуть?
Ozzя
 var BMPPtr: Pointer;

...
BMPPtr:=LoadFile('чё_нить.bmp');
PutBMP(0,0,BMPPtr,false);
Тимон
Короче я сделал всё как ты сказал.
Вот у меня получился такой код:
 
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я
В 1-й строке.
Должно быть
 uses MegaGraf,Images,MemPlus,Keyboard,Fonts,i80386;

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

Установка режима так
  if SetSVGAMode(640,480,grSVGA64k) then 
// тут твоя графика
Тимон
Вот почему то именно таким образом он выводит изображение 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я
Если я меняю режим 6 на 7 (grSVGA16M) (потому что мне нужно вывести 24 битный рисунок)

Вот тут я помочь ничем не смогу. Ибо ни одна из моих видеокарт уже не держит vesa 1.2. И твою программу с твоими рисунками проверить не смогу.
Тимон
наконец то! Удалось вывести 16 битное изображение. Черт с этим 24-битным... Спасибо тебе Ozzя за помощь огромное!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.