lab3 odblokowany

background image

Katedra Informatyki Stosowanej PŁ

dr inż. Anna Fabijańska

Podstawy Programowania

Laboratorium 3


Zadanie 1:

Zawartość dowolnego pliku tekstowego wyświetlić na konsoli. Ścieżkę dostępu
do pliku należy pobrać od użytkownika.

Zadanie 2:

Napisać funkcję do obliczania rozmiaru plików. Jako argument funkcja powinna
przyjmować ścieżkę dostępu lub wskaźnik do pliku.

Zadanie 3:

Napisać program do kopiowania plików tekstowych. Program powinien
oczekiwać na podanie ścieżki dostępu do pliku źródłowego i pliku docelowego.

Zadanie 4:

Zmodyfikować program z Zadania 3 tak, aby kopiowanie odbywało się od
końca pliku (ostatni znak pliku źródłowego powinien być pierwszym znakiem
pliku docelowego). W programie umieścić funkcję kopiującą, przyjmującą jako
argumenty ścieżki do plików: źródłowego i docelowego.

Zadanie 5:

Dana jest funkcja postaci:

+

<

<

+

+

+

<

=

10

lub

1

5

10

0

)

2

)(

1

(

3

0

1

sin

2

)

(

2

2

x

x

dla

x

x

dla

x

x

x

x

x

dla

x

x

f

Napisać program, do tablicowania powyższej funkcji na przedziale

>

<

b

a,

podanym przez użytkownika. Wyniki należy zapisać do pliku w dwóch
kolumnach.


Zadanie dodatkowe

Napisać program do kopiowania plików w formacie *.bmp.


Funkcje potrzebne do wykonania zadań:

fopen()

,

fclose()

,

fprintf()

,

fscanf()

,

fread()

,

fwrite()

,

fseek()

,

ftell()

,

feof(), putc(),

getc()

. Plik nagłówkowy:

stdio.h





background image

Katedra Informatyki Stosowanej PŁ

dr inż. Anna Fabijańska

Opis formatu BMP

BMP jest jednym z formatów plików danych z grafiką bitmapową. Opracowany

pierwotnie jako natywny dla systemu OS/2, wykorzystywany później także w interfejsach
systemów z rodziny Microsoft Windows, jednak dostępny jako format przechowywania danych
również na wszystkich pozostałych platformach. Zawiera w sobie prostą kompresje bezstratną
RLE (która nie musi być użyta) oraz informację o użytych kolorach. Obsługuje tylko tryb RGB.

Rys.1. Struktura bitmapy

Plik w formacie BMP składa się z następujących elementów (rys. 1):

nagłówek pliku;

nagłówek obrazu;

opcjonalnie paleta RGB (tablica kolorów);

dane obrazowe.

Nagłówek pliku, stanowi struktura BITMAPFILEHEADER (Tabela 1), która spełnia rolę

sygnatury identyfikującej format pliku.

Tabela 1. Budowa nagłówka bitmapy.

Nazwa

Rozmiar (bajty)

Opis

bfType

2

Sygnatura pliku, zawsze przyjmuje wartość BM

bfSize

4

Długość całego pliku w bajtach

bfReserved1

2

Pole zarezerwowane zwykle ma wartość 0

bfReserved2

2

Pole zarezerwowane zwykle ma wartość 0

bfOffBits

4

Pozycja danych obrazowych w pliku


Bezpośrednio po nagłówku następuje nagłówek obrazu. W przypadku formatu

kompatybilnego rodziną systemów Windows, stanowi go struktura BITMAPINFOHEADER
(Tabela 2).

Tabela 2 Budowa nagłówka bitmapy.

Nazwa

Rozmiar (bajty)

Opis

biSize

4

Wielkość nagłówka informacyjnego

biWidth

4

Szerokość obrazu pikselach

biHeight

4

Wysokość obrazu w pikselach

biPlanes

2

Liczba płatów (musi być 1)

biBitCount

2

Liczba bitów na piksel: 1,4,8,16,24 lub 32

biCompression

4

Algorytm kompresji: BI_RGB=0, BI_RLE8=1, BI_RLE4=2, BI_BITFIELDS=3

biSizeImage

4

Rozmiar samego rysunku

biXpelsPerMeter

4

Rozdzielczość pozioma

biYpelsPerMeter

4

Rozdzielczość pionowa

biCrlUses

4

Liczba kolorów w palecie

biCrlImportant

4

Liczba ważnych kolorów w palecie.

background image

Katedra Informatyki Stosowanej PŁ

dr inż. Anna Fabijańska

Paleta (tablica) kolorów występuje bezpośrednio po części nagłówkowej (zazwyczaj

zajmującej łącznie 54 bity), a jej format zależy od typu bitmapy, tj. od ilości bitów,
przeznaczonych do zakodowania jednego piksela. W przypadku bitmap 1, 4 i 8 bitowych,
kompatybilnych z systemami z rodziny Windows, paletę barw stanowi 2

bpp

– elementowa

tablica struktur RGBQUAD postaci:

typedef struct tagRGBQUAD {
BYTE
rgbBlue;
BYTE
rgbGreen;
BYTE
rgbRed;
BYTE
rgbReserved;}
RGBQUAD;


Wartość piksela jest indeksem elementu palety barw, opisującej za pomocą trójki

składowych RGB jego kolor.

Wynikowy kolor nie zawsze jednak jest kolorem wynikającym z mapowania pikseli. W

przypadku bitmap 16 i 32 bitowych, z wartością pola biCompression w strukturze
BITMAPINFOHEADER ustawioną na BI_BTFIELDS, w miejscu tablicy struktur RGBQUAD,
występuje tablica trzech, czterobajtowych liczb całkowitych. Te trzy wartości są maskami,
określającymi bity określające odpowiednio wartości RGB.

Obrazy 24 – bitowe, jak również 16, i 32 - bitowe, w których nagłówku pole

biCompression ma wartość różną od BI_BITFIELDS nie posiadają palety barw.

Ostatnim komponentem plików w formacie BMP są dane obrazowe, czyli piksele. Ich

położenie w stosunku do końca struktury BITMAPFILEHEADER, określone jest wartością pola
bfOffBits w nagłówku pliku.

Piksele ułożone są rzędami w kolejności od dołu do góry. Ilość rzędów, jak również

pikseli w rzędzie określona jest odpowiednio wartościami pól biHeight oraz biWidth. Rozmiar
rzędu jest zdeterminowany przez wartości pól biBitCount i biWidth. Ilość pikseli w jednym
rzędzie jest zaokrąglana do najbliższej całkowitej wielokrotności liczby 4.

Format danych obrazowych zależy od ilości bitów przeznaczonych do zakodowania

jednego piksela:

1 bpp

bajt jest dzielony na 8 części, (po jednym bicie) przy czym wartość z każdej części jest
indeksem do elementu w palecie barw;

4 bpp

bajt jest dzielony na 2 części, (po cztery bity) przy czym wartość z każdej części jest
indeksem do elementu w palecie barw;

8 bpp

każdy piksel jest reprezentowany przez 1 bajt, którego wartość jest indeksem do elementu
w palecie barw;

16 bpp

każdy piksel jest reprezentowany przez 2-bajtową liczbę całkowitą. Jeśli wartość pola
biCompression

w

nagłówku

BITMAPINFOHEADER

posiada

wartość

BI_RGB

(0),

intensywność każdego koloru, jest reprezentowana przez 5 bitów (nieużywany jest wtedy
bit najbardziej znaczący); jeżeli natomiast wartość pola biCompression ustawiona jest na
BI_BITMAP, 4- bajtowe maski bitowe, określają wartości każdego z komponentów RGB;

24 bpp

każdy piksel opisany jest poprzez 3 kolejne bajty, określające kolejno wartości składowych
RGB (odwrotnie niż w większości formatów graficznych);

32 bpp

każdy piksel reprezentowany jest przez 4 – bajtową liczbę całkowitą analogicznie jak
w przypadku bitmap 24 bitowych, z dodatkowym niewykorzystanym bajtem na końcu.


Wyszukiwarka

Podobne podstrony:
lab3.odblokowany
Lab3-J2ME1-h.odblokowany
lab3
lab3 kalorymetria
Instrukcja odblokowania Navia nV35
Instrukcja Lab3
lab3 6
lab3
sprawko z lab3 z auto by pawelekm
Lab3 zadanie 2 schemat organizacyjny
Lab3 KWW KT
Instrukcja odblokowania Yakumo EazyGoXSC
3 psyg,st www odblokowany
Podstawy Robotyki lab3 id 36832 Nieznany
Architekrura Systemów Lab3
Lab3 Cpp GPS opis
AKiSO lab3 id 53767 Nieznany

więcej podobnych podstron