ЛАБОРАТОРНА РОБОТА № 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 Реалізувати можливість програвання попередньо відкритого відео файлу