Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
public:asciiart_2011 [2011/05/13 12:47]
Petr Svenda vytvořeno
public:asciiart_2011 [2018/02/24 19:10] (aktuální)
Řádek 1: Řádek 1:
 + ​====== Generování ASCII Artu ======
 +  * Úkol zadán: **16. 5. 2011**
 +  * Odevzdávání naostro možné od: **16. 5. 2011** ​
 +  * Absolutní konec odevdávání:​ **30. 6. 2011**
 +  * Odevzdáváte soubory ''​main.c'',​ ''​asciiart.c''​ a ''​asciiart.h''​ do adresáře zav05. ​
  
 +Doplnění zadání (zobrazeno __podtrženě__):​
 +  * zatím nic
 + 
 +==== Představení úkolu ====
 +Oblíbeným způsobem ​
 +
 +
 +==== Zadání ====
 +Mějme barevný obrázek o rozměrech 256x256 pixelů uložený v 24-bitové barevné hloubce. Barva pixelu je uložena ve formátu (red,​green,​blue),​ kde každá ze složek zabírá 8 bitů. ​
 +
 +  - Vytvořte si vlastní program MP3PlaylistGen,​ který bude obsahovat:
 +    - Soubor main.c (bude obsahovat základní kód pro obsluhu parametrů příkazové řádky, nebude obsahovat implementaci dílčích funkcí potřebných pro generování MP3 playlistu)
 +    - Soubory MP3PlaylistGen.c a MP3PlaylistGen.h (budou obsahovat podpůrné funkce využívané v souboru main.c)
 +
 +==== Požadavky ====
 +  * Program MP3PlaylistGen bude očekávat jako vstup 2 parametry z příkazové řádky. Prvním bude jméno vstupního souboru (M3U soubor s nově vytvořeným playlistem) a druhým jméno adresáře, kde program zahájí prohledávání adresářové struktury. V případě, že tyto dva parametry nedostane, vypíše na standardní chybový výstup hlášku (dle vašeho uvážení) o tom, jak se má použít a skončí s nenulovým výstupním kódem.
 +
 +==== Testování ====
 +  * Jak již bylo uvedeno, vzorové řešení je vám k dispozici na počítači //aisa// v adresáři ///​home/​xsvenda/​pb071/​MP3PlaylistGen//​. Tento adresář zároveň obsahuje podadresář //data// s celou testovací adresářovou strukturou ///​home/​xsvenda/​pb071/​MP3PlaylistGen/​data//​. ​
 +
 +==== Bonus ====
 +  * Pokud bude váš program korektně fungovat i nad složitější adresářovou strukturou ////​aisa:/​home/​xsvenda/​pb071/​MP3PlaylistGen/​data_bonus,​ získáváte +2 body 
 +
 +
 +
 +==== Poznámky ====
 +==== Poznámky: ====
 +
 +=== Popis 24-bitového nekomprimovaného bmp formátu ===
 +  * Na začátku souboru je 54 Bytů, které zabírají 2 hlavičky ve kterých jsou informace o souboru a o vlastním obrázku. V první hlavičce (velikost 14 Bytů) jsou uloženy informace o bmp souboru. Jeho typ, Velikost a začátek vlastního obrázku (více viz. 1. tabulka). ​
 +  * Po hlavičce s informacemi o souboru následuje hlavička (velikost 40 Bytů) s informacemi o obrázku (viz. 2. tabulka). Z hodnot parametrů uložených v druhé hlavičce budete zřejmě potřebovat položky biWidth a biHeight. Ostatní jsou zde uvedené pouze pro úplnost. ​
 +  * Všechna dvou a čtyřbajtová čísla v obou hlavičkách jsou v souboru na disku uložena ve formátu little endian. ​
 +  * Po obou hlavičkách jsou v souboru uloženy jednotlivé pixely obrázku. Každý pixel zabírá 3*1 Byte (Blue, Green, Red). Pixely obrázku jsou uloženy v souboru po řadách jeden za druhým. První řada pixelů v souboru odpovídá nejspodnější řadě obrázku zobrazeného na obrazovce. ​ Počet bajtů, které zabírá každý řádek pixelů v souboru, musí být číslo dělitelné čtyřmi. Na konec každého řádku v souboru jsou doplněny nuly, pokud platí, že "​(počet_pixelů_na_řádku * 3) modulo 4 != 0."
 +  * Příklad: Budeme-li mít obrázek široký 5 pixelů, zabere každá řádka obrázku 15B. Toto číslo však není dělitelné čtyřmi. Za každým pátým pixelem bude proto v souboru vložen jeden bajt s nulovou hodnotou. ​
 +
 +1. tabulka: Hlavička bitmapového souboru:
 +^ Offset (Byte) od začátku souboru ^ Velikost (Byte) ^ Jméno ^ Účel ^
 +| 0 | 2 | bfType | Má vždy ASCII hodnotu '​BM',​ decimálně 19778 |
 +| 2 | 4 | bfSize | Velikost celého souboru v Bytech |
 +| 6 | 2 | bfReserved1 | Rezervováno. Musí se vždy rovnat 0 |
 +| 8 | 2 | bfReserved2 | Rezervováno. Musí se vždy rovnat 0 |
 +| 10 | 4 | bfOffset | Je v něm uloženo, po kolika bytech začínají data |
 +
 +2. tabulka: Info hlavička o bitové mapě:
 +^ Offset (Byte) od začátku souboru ^ Velikost (Byte) ^ Jméno ^ Účel ^
 +| 14 | 4 | biSize | Velikost bmp info hlavičky (tato struktura) v bytech. Mělo by být rovno 40 |
 +| 18 | 4 | biWidth | Šířka obrázku v pixelech |
 +| 22 | 4 | biHeight | Výška obrázku v pixelech |
 +| 26 | 2 | biPlanes | počet řezů |
 +| 28 | 2 | biBitCount | počet bitů na pixel (v našem příkladě 24) |
 +| 30 | 4 | biCompression | Komprese. (v našem případě 0) |
 +| 34 | 4 | biSizeImage | Velikost obrázku v bytech |
 +| 38 | 4 | biXPelsPerMeter | Rozlišení obrázku v ose x. Počet pixelů na 1 metr. |
 +| 42 | 4 | biYPelsPerMeter | Rozlišení obrázku v ose y. Počet pixelů na 1 metr. |
 +| 46 | 4 | biClrUsed | Počet barev užitých v bitmapě (Má svůj účel při bytových hloubkách < 24) |
 +| 50 | 4 | biClrImportant | Počet důležitých barev v bitmapě. (Má svůj účel při bytových hloubkách < 24) |
 +
 +3. tabulka: Struktura bmp souboru na disku: ​
 +^ Hlavička bmp souboru (14 Bytů) ^ Info hlavička o bmp obrázku (40 Bytů) ^ 1. pixel  (B,G,R) (3*1 Byte) ^ 2. pixel  (B,​G,​R) ​ 3*1 Byte ^ atd... ^
 +
 +  * Tuto úlohu připravil Pavel Černohorský,​ v případě dotazů kontaktujte [[359558@mail.muni.cz|Ondřeje Svobodu]].
QR Code
QR Code public:asciiart_2011 (generated for current page)