ЛАБОРАТОРНА РОБОТА № 1
Тема роботи: Створення простих програм для візуалізації відео файлів та зображень.
Мета роботи: Одержання практичних навиків розробки програмного забезпечення для візуалізації растрових зображень і відео файлів з використанням систем швидкої розробки мультимедіа додатків Delphi і C++Builder фірми Borland Int.
Література: 1-4
1. Теоретичні відомості
Будь-яка відео чи графічна інформація є послідовністю блоків даних, що створюють прямокутну таблицю пікселів (pixels – елемент зображення). Більшість файлів, що містять мультимедійну інформацію стискаються. Стиснення необхідне для зменшення об'єму дискового простору, необхідного для збереження відповідного файлу. Кожного разу при читанні файлу у якому міститься мультимедійну інформація відбувається декомпресія файлу, при збереженні - повторна компресія.
У системах Delphi/C++Builder визначений компонент TImage (сторінка Additional палітри компонентів), призначений для візуалізації зображень у вигляді бітової карти (TBitmap), метафайлу (TMetafile) або ‘ікони’ (TIcon).
Завантаження файлу зображення в Image1 здійснюється відповідними компонентними функціями (додатково використовуються компоненти OpenPictureDialog і SavePictureDialog):
if (OpenPictureDialog1->Execute()) // відкриття файлу
Image1->Picture->LoadFromFile(“Імя файла”);
if (SavePictureDialog1->Execute()) //збереження файлу
Image1->Picture->SaveToFile(“имя_файла”);
Розмір (у пікселях) області візуалізації визначається як:
int nX=Image1->Width;
int nY=Image1->Height;
Розмір завантаженого в Image зображення визначається як:
int pX=Image1->Picture->Width;
int pY=Image1->Picture->Height;
З метою візуалізації зображення з розмірами, які значно перевищують розміри вікна, компонент Image поміщають в контейнер ScrollBox (причому властивість Align останнього встановлено в alClient), цим досягається скролінг вікна показу зображення щодо вікна програми.
Режим масштабування (з показом завантаженого зображення у весь розмір вікна) включається перемиканням булевої властивості вікна в true (відповідно виконується і зворотня дія):
Image1->Stretch = ! (Image1->Stretch);
Проте при цьому (якщо відношення горизонтального і вертикального розмірів зображення не співпадають з розмірами вікна) зображення буде спотворено (спотворяться пропорції). Для збереження пропорцій (відмітимо, що більшість сучасних дисплеїв використовують ‘квадратні’ пікселі, тобто AspectRatio=1) необхідно відповідним чином змінити розмір вікна. На рисунку 1 представлено вигляд головного вікна програми перегляду файлів зображень.
/
Рисунок 1- Головне вікно програми візуалізація файлів зображень
Для роботи з відео файлами в системі Delphi/C++Builder використовується компонент MediaPlayer (‘програвач’), що надає інтерфейс до мультимедійних можливостей Windows за допомогою MCI (Media Control Interface). Більшість методів компоненту MediaPlayer реалізовані як виклики стандартної функції mciSendCommand з відповідними параметрами. MediaPlayer може керуватись приводами CD-ROM, MIDI-секвенсорами та іншими пристроями. Типи файлів, що підтримуються MCI - MID, RMI, WAV, MP3, AVI, MPG (MPEG-1 підтримуються в стандартній інсталяції Windows, MPEG-2 - ні).
Програвач візуалізується у вигляді лінійки керування (набір кнопок, частина або всі з яких можуть бути зроблені невидимими шляхом налаштування властивості VisibleButtons в ObjectInspector’е або під час RunTime), як це показано на рисунку 2.
/
Рисунок 2 - Вікно програми програвання відео файлів
Стандартне завантаження відео файла для обробки компонентом MediaPlayer здійснюється таким чином:

MediaPlayer1->Close(); // спочатку закрити програвач
if (OpenDialog1->Execute())
{
MediaPlayer1->FileName = OpenDialog1->FileName;
MediaPlayer1->Open(); // відкрити програвач
}
Почати програвання можна натисненням лівої кнопки лінійки керування (або викликом MediaPlayer1->Play() при RunTime). При встановлені властивості AutoOpen в true програвання починається відразу (натиснення кнопки або виклику методу Play не вимагається). У разі DeviceType=dtAutoSelect програвач самостійно визначить тип пристрою по розширенню завантаженого для програвання файлу. При RunTime – керуванні програвачем використовуються компонентні методи Play, Pause, Stop, Next, Prev, Step, StartRecording і Eject, що відповідають (зліва направо) кнопкам лінійки керування.
Область показу відео файлу задається присвоєнням властивості Display програвача імені компоненту, в область якого здійснюється виведення відео:
MediaPlayer1->Display = Panel1; // показувати на Panel1
Є можливість явного визначення розміру області виведення відео (що важливе, наприклад, для реалізації режиму показу в повноекранному режимі):
MediaPlayer1->DisplayRect = Rect(2,2
Panel1->Width-1,Panel1->Height-1); // задати розміри відеоекрану
Про додаткові можливості програвача MediaPlayer можна подивитись у системі контекстної допомоги Delphi/C++Builder.

2. Завдання для виконання
2.1. Перед виконанням роботи ознайомитись з теоретичними відомостями.
2.2. Розробити програмне забезпечення для візуалізації відео файлів та зображень.
2.3. У відповідності до отриманого номеру варіанту до розробленого програмного забезпечення включити функції наведені у пункті 5.
3. Зміст звіту
3.1. Тема та мета роботи.
3.2. Коротко основні теоретичні відомості.
3.3. Відобразити отримані результати (п. 2.2-2.3) у вигляді копій екрану.
3.4. Надати пропозиції по розширенню функціональності програми.
3.5. Висновки за результатам виконаної роботи.
4. Контрольні запитання
Які високорівневі компоненти Delphi/С++Builder застосовуються в програмах мультимедіа і яка їх функціональність?
З яких причин компонент типа TImage в стандартному постачанні не може бути використаний при роботі із зображеннями у форматі JPEG?
Чим відрізняється масштабування із збереженням пропорцій зображення від використання властивості Stretch?
Яким прийомом досягається скролінг зображення великого розміру?
Як можна досягти незмінності режиму вписування зображення у вікно при зміні розмірів вікна програми?
Якими програмними засобами може бути реалізований показ відео файлів?
5. Індивідуальне завдання
Номер варіанту
Завдання по модифікації програми

1
Розширити функціональність програми проглядання файлів зображення можливістю задання довільного масштабу згідно лінійки 500, 300, 200, 100 % що до розміру зображень у файлі

2
Створити програвач для програвання двох мультимедійний файлів одночасно, що використовує один компонент кнопок керування

3
Забезпечити програвач шкалою керування, що відображає поточне положення у файлі, що програється і має можливість керувати позицією програвання

4
Реалізувати можливість прискореного і сповільненого програвання відео файлу

5
Реалізувати функцію повертання зображення

6
Реалізувати можливість переходу вперед/назад у відео файлі на заданий час

7
Добавити кнопку, яка б робила копію екрану та заносила його у буфер

8
Реалізувати можливість перегляду та завантаження останніх відкритих файлів розробленою програмою

9
Реалізувати можливість перегляду інформації про відкритий файл

10
Добавити можливість збереження зображень

11
Добавити можливість вставки із файлу (чи буфера) зображення у робочу область програми

12
Добавити кнопку, яка дозволяє переглядати відео та зображення в повно екранному режимі

13
Модифікувати програму так, щоб можна було переглядати файли поміщенні в окрему папку у режимі “слайд-шоу”

14
Добавити до програми “провідник” для перегляду мультимедійних файлів та їх атрибутів

15
Добавити можливість пошуку графічних файлів

16
Добавити можливість пошуку відео файлів

17
Добавити можливість друку зображення, що знаходиться у робочій області програми

18
Додати функції для редагування графічних зображень, що знаходяться у робочій області програми

19
Добавити можливість перенесення зображення на робочий стіл

20
Реалізувати можливість програвання попередньо відкритого відео файлу