Hirdetés
- MIUI / HyperOS topik
- One mobilszolgáltatások
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Android alkalmazások - szoftver kibeszélő topik
- Milyen okostelefont vegyek?
- Tényleg nem változik semmit a Samsung Galaxy S26+?
- Google Pixel topik
- Xiaomi 14T Pro - teljes a család?
- Fele annyit ér az iPhone Air, mint amennyibe pár hete került
Új hozzászólás Aktív témák
-
b14
senior tag
(* bmpread.pas *)
program Bitmap_olvasasa;
uses crt, graph, bitmap;
var gvezerlo, gmod,
hibakod, x, y :integer;
nev : string;
begin
clrscr;
writeln('K‚ren a .BMP f jl nev‚t: ');
readln(nev);
if nev='' then nev:='donald.bmp';
{ A grafika bekapcsol sa automatikus hardver ‚s m˘d detekt l ssal }
detectgraph(gvezerlo,gmod);
initgraph(gvezerlo,gmod,'');
{ Ha nem sikerlt bekapcsolni a grafik t kil‚p‚s a programb˘l }
hibakod := GraphResult;
if hibakod <> grOK then
begin
WriteLn('Grafika hiba:');
WriteLn(GraphErrorMsg(hibakod));
Halt(1);
end;
{ A .BMP f jl beolvas sa ‚s megjelenˇt‚se }
bmpdisplay(nev);
readln;
{ A grafika kikapcsol sa ‚s a sz”veges zemm˘d vissza llˇt sa}
closegraph;
restorecrtmode;
end.
Es a hsznalt unit:
(* BITMAP.PAS *)
{ a grafikus k‚perny“ k”zep‚re
16 szˇn– bitk‚p felolvas s t v‚gz“ modul }
unit bitmap;
interface
{ 16 szˇn– bitk‚p megjelenˇt‚se }
procedure BMPDisplay(FileName: string);
implementation
uses Graph;
type
TBitMapHeader = Record { a bitk‚p fejl‚ce }
bfType : word;
bfSize : longint;
bfReserved : longint; { 0 }
bfOffBits : longint;
biSize : longint;
biWidth : longint;
biHeight : longint;
biPlanes : word; { 1 }
biBitCount : word; {1,4,8,24}
biCompression : longint;
biSizeImage : longint; {b jtban}
biXPelsPerMeter : longint;
biYPelsPerMeter : longint;
biClrUsed : longint;
biClrImportant : longint;
end;
TRGBQuad = Record { az RGB-paletta elemei }
rgbBlue,
rgbGreen,
rgbRed,
rgbReserved : Byte;
end;
TByteArray = Array[0..50000] of byte;
{----------------------------------------------------}
{ 4-bites szˇneket tartalmaz˘ .BMP f jl tartalm nak }
{ megjelenˇt‚se a k‚perny“ k”zep‚n }
{----------------------------------------------------}
procedure Display4 (var f : file; BitMapHeader : TBitMapHeader);
var
i, y: Integer;
RGBQuad : TRGBQuad;
TwoPixel, Black : Byte;
Line : ^TByteArray;
number : word;
CurrentX, BeginX, BeginY, EndY : Integer;
begin
if GetMaxColor < 15 then
begin
OutText ('Ez a m˘d nem t mogatja a 4 bites szˇnek haszn lat t!');
Exit;
end;
Black := 16;
{ a palettaszˇnek felolvas sa }
for i:= 0 to 15 do
begin
BlockRead(f, RGBQuad, SizeOf(RGBQuad));
if (longint(RGBQuad)=0) then Black := i;
with RGBQuad do
SetRGBPalette(i, rgbRed shr 2, rgbGreen shr 2, rgbBlue shr 2);
SetPalette(i,i);
end;
{ a bitk‚p k”z‚pre igazˇt sa }
with BitMapHeader do
begin
{ a k‚psor b jtok sz ma }
Number := (biWidth div 2 + 3) and not 3;
{ k”z‚pre helyezi a k‚perny“n }
BeginX := (GetMaxX - biWidth) div 2;
BeginY := GetMaxY - (GetMaxY - biHeight) div 2;
EndY := BeginY + 1 - biHeight;
end;
{ a k‚p bitjeinek feldolgoz sa }
GetMem (Line, number + 1);
{ soronk‚nt }
for y:=BeginY downto EndY do
begin
BlockRead(f, Line^[1], number);
CurrentX := BeginX;
{ b jtonk‚nt }
for i:=1 to number do
begin
TwoPixel := Line^; { k‚t k‚ppont }
if TwoPixel shr 4 <> Black then { a fels“ }
PutPixel(CurrentX, y ,TwoPixel shr 4);
Inc(CurrentX);
if TwoPixel and 15 <> Black then { az als˘ }
PutPixel(CurrentX, y, TwoPixel and 15);
Inc(CurrentX);
end;
end;
FreeMem (Line, number+1);
end;
procedure NotDisplay(colors:byte);
var
tst : string[4];
begin
str(colors, tst);
OutText (tst+' bites szˇneket tartalmaz˘ bitk‚p megjelenˇt‚s‚re nem alkalmas!');
end;
{--------------------------------------------}
{ A megadott nev– .BMP llom ny feldolgoz sa }
{--------------------------------------------}
procedure BMPDisplay(FileName: string);
var f: file;
BitMapHeader : TBitMapHeader;
begin
Assign(f,FileName);
FileMode := 0; {Read Only}
{$I-}
Reset(f,1);
FileMode := 2; {Default}
{$I+}
if IOResult<>0 then
begin
OutText ('A(z) '+FileName+' nev– f jl nem l‚tezik!');
Exit;
end;
{ a bitk‚pfejl‚c beolvas sa }
BlockRead(f, BitMapHeader, SizeOf(BitMapHeader));
with BitMapHeader do
begin
if (bfType<>19778) or (bfReserved<>0) or (biPlanes<>1) then
begin
OutText ('Nem Windows bitk‚p llom ny!');
Close(f);
Exit;
end;
if biCompression<>0 then
begin
OutText ('Nem tud megjelenˇteni t”m”rˇtett llom nyt!');
Close(f);
Exit;
end;
ClearDevice;
case biBitCount of
1 : NotDisplay(1); { 1-bites szˇn: ? }
4 : Display4(f, BitMapHeader);{ 4-bites szˇn }
8 : NotDisplay(8); { 8-bites szˇn: ? }
24 : NotDisplay(24); { 24-bites szˇn: ? }
else
begin
OutText ('Nem Windows bitk‚p llom ny!');
Close(f);
Exit;
end;
end;
end;
Close(f);
end;
end.
Remelem erre volt szukseged.
Tovabbi jo programozást.
Ha nem erre lett volnaszukseged akkor csak szolj vannak meg ilyen dolgaim
Új hozzászólás Aktív témák
- CADA, Polymobil, és más építőkockák
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Autós topik
- Mibe tegyem a megtakarításaimat?
- Milyen autót vegyek?
- MIUI / HyperOS topik
- BestBuy topik
- Arc Raiders
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- További aktív témák...
- Iphone 16 PRO 256GB Titanium BLACK - Garanciás - Akku: 94%
- Esport Gaming PC (Intel i5-9400F, 32GB RAM, RTX 2060, 500GB SSD) Eredeti Windows11 Pro
- Gamer PC - AMD RYZEN 7 7800X3D/RTX 5070 Ti 16GB/32GB RAM/1TB NVMe/850W
- MSI GeForce RTX 4080 SUPRIM X 16GB - Garancia
- SONY FA-WRC1M Vezeték nélküli rádiós vezérlő
- iPhone 13 mini 128GB Green -1 ÉV GARANCIA -Kártyafüggetlen, MS3896, 95% Akkumulátor
- GYÖNYÖRŰ iPhone 13 mini 128GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS4062, 100% Akkumulátor
- LG 27GS60QC-B - 27" Ívelt - 2560x1440 - 180Hz 1ms - AMD FreeSync - Bontatlan - 2 Év Gyári Garancia
- Újszerű HP 250 G10 - 15.6"FHD IPS - i5-1334U - 8GB - 512GB - Win11 - 1,5 év garancia - MAGYAR
- Honor X6a 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


