14756

Написать программу, реализующую просмотр графического файла (формат BMP)

Лабораторная работа

Информатика, кибернетика и программирование

Цель работы: Написать программу реализующую просмотр графического файла формат BMP. Программа должна: загружать и выводить на экран произвольный файл с использованием файловых функций; читать все файлы с цветовой палитрой до 256 цветов black/whitegrey16256; выводи

Русский

2013-06-09

255.5 KB

10 чел.

Цель работы:

Написать программу, реализующую просмотр графического файла (формат BMP). Программа должна:

  •  загружать и выводить на экран произвольный файл (с использованием файловых функций);
  •  читать все файлы с цветовой палитрой до 256 цветов (black/white,grey,16,256);
  •  выводить информацию из заголовков файла (тип, размер, разрешение, использование сжатия, к-во цветов, ...), а также цветовую палитру;

Код программы:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

namespace TSOS_LAB1_Final

{

   public partial class Form1 : Form

   {

       public String bfType;

       public Int32 bfSize;

       public Int16 bfReserved1;

       public Int16 bfreserved2;

       public Int32 bfOffBits;

       public Int32 bfSizeheader;

       public Int32 bfShirinaImage;

       public Int32 bfVisotaImage;

       public Int16 bfNumberPlosk;

       public Int16 bfBitPixel;

       public Int32 bfCompress;

       public Int32 bfSizeRastMass;

       public Int32 bfGorSize;

       public Int32 bfVertSize;

       public Int32 bfNumberColors;

       public Int32 bfMainColors;

       public Form1()

       {

           InitializeComponent();

       }

       private void button1_Click(object sender, EventArgs e)

       {

           openFileDialog1.Filter = "bmp |*.bmp";

           openFileDialog1.ShowDialog();

           BinaryReader bReader = new BinaryReader(File.Open(openFileDialog1.FileName, FileMode.Open));

           bfType = new string(bReader.ReadChars(2));

           bfSize = bReader.ReadInt32();

           bfReserved1 = bReader.ReadInt16();

           bfreserved2 = bReader.ReadInt16();

           bfOffBits = bReader.ReadInt32();

           bfSizeheader = bReader.ReadInt32();

           bfShirinaImage = bReader.ReadInt32();

           bfVisotaImage = bReader.ReadInt32();

           bfNumberPlosk = bReader.ReadInt16();

           bfBitPixel = bReader.ReadInt16();

           bfCompress = bReader.ReadInt32();

           bfSizeRastMass = bReader.ReadInt32();

           bfGorSize = bReader.ReadInt32();

           bfVertSize = bReader.ReadInt32();

           bfNumberColors = bReader.ReadInt32();

           bfMainColors = bReader.ReadInt32();

           

           bReader.Close();

           String CompressType=0.ToString();

           if (bfCompress == 0 || bfCompress == 3 || bfCompress == 6)

               CompressType = "Без сжатия";

           else if (bfCompress == 1 || bfCompress == 2)

               CompressType = "RLE";

           else if (bfCompress == 4)

               CompressType = "JPEG";

           else if (bfCompress == 5)

               CompressType = "PNG";

           Bitmap original_image = new Bitmap(openFileDialog1.FileName);

           pictureBox1.Image = original_image;

           pictureBox1.Show();

           String message = "Сигнатура файла: " + bfType + "\n Размер файла: " + bfSize.ToString() +

                            "\n Местонахождение данных растрового массива: " + bfOffBits.ToString() +

                            "\n Длина заголовка растрового массива: " + bfSizeheader.ToString() +

                            "\n Ширина изобрадения: " + bfShirinaImage.ToString() + "\n Высота изображения: " +

                            bfVisotaImage.ToString() + "\n Число цевтовых плоскостей: " + bfNumberPlosk +

                            "\n Бит/пиксел: " + bfBitPixel + "\n Метод сжатия: " + CompressType +

                            "\n Длина растрового массива: " + bfSizeRastMass + "\n Горизонтальное разрешение: " +

                            bfGorSize + "\n Вертикальное разрешение: " + bfVertSize +

                            "\n Количество цветов изображения: " + bfNumberColors + "\n Количество основных цветов: " +

                            bfMainColors;

           

           MessageBox.Show(message);

       }

   }

}

Результат работы:

Вывод: в ходе работы освоили приемы обработки графических изображений в формате BMP.


 

А также другие работы, которые могут Вас заинтересовать

23843. Житие протопопа Аввакума: новаторство Аввакума 22.5 KB
  Житие протопопа Аввакума: новаторство АввакумаОн ощущает себя святым страдающим за веру пишет свое житие. Прожив полную лишений жизнь он говорит об этом случае в своем житие так глубоко в душу это ему запало.
23844. Эволюция жанра жития 24.5 KB
  Следующий этап эволюции наступает в тот момент когда на предыдущем этапе уже некуда развиваться достигнуто совершенство.1 этап.2 этап. Плетение словес Епифамия Премудрого совершенствовать уже было не и наступил следующий этап.
23845. Эволюция жанра хождения 23.5 KB
  Эволюция жанра хождения.Хождениями в древнерусской литературе назывались произведения в которых описывались путешествияпаломничества в Палестину Византию страны Востока. Хождения совершались как официальными представителями русской церкви так и по собственной инициативе или обету паломников их называли €œкАликами перехожими€ Хождение Игумена Даниила древнейшее произведение жанра хождения.Популярность Хождения игумена Даниила в древнерусской письменности была исключительно велика о чём свидетельствует тот факт что до нас...
23846. Зарождение Силлабической поэзии и русского театра 29 KB
  Зарождение Силлабической поэзии и русского театраЗарождение Силлабической поэзии в России связано с именами Симеона Полоцкого Сильвестра Медведева Кариона Истомина. Происхождение и образование Симеона Полоцкого наглядно показывают откуда и каким образом проникал в Россию стиль барокко. Наследие Симеона Полоцкого очень велико. Курянин по происхождению служивший подьячим в Приказе тайных дел а потом по настоятельному совету Симеона постригшийся в монахи [5] Сильвестр Медведев после смерти учителя унаследовал его место место придворного...
23847. Творчество Симеона Полоцкого 24 KB
  Творчество Симеона ПолоцкогоОн воспитывал государевых детей одного из них будущего царя Федора Алексеевича он научил сочинять силлабические вирши открыл латинскую школу неподалеку от Кремля в Заиконоспасском монастыре где обучались молодые подьячие Приказа тайных дел собственной канцелярии царя Алексея Михайловича. Симеон Полоцкий также занял или точнее учредил еще одну должность должность придворного поэта дотоле в России неизвестную. Любое событие в царской семье браки именины рождения детей давало Симеону Полоцкому повод...
23849. Предмет, об’єкт і задачі економічного аналізу 57 KB
  Поняття економічного аналізу та його роль в управлінні підприємством. Предмет і об’єкти економічного аналізу. Функції та принципи економічного аналізу. Система показників економічного аналізу. Історія розвитку економічного аналізу та його зв’язок з іншими дисциплінами...
23850. Теоретическая модель цифровой сети связи 83 KB
  Суть сети – соединение разного оборудования. Следовательно, одной из основных проблем является проблема совместимости. Поэтому, в настоящее время, все возможные пути развития сетей отражены в стандартах.
23851. О славянах 61.3 KB
  Владимир был сыном Святослава и всего лишь Ольгиной ключницы.Однако после гибели его более знатных братьев Владимир начинает княжить в Киеве один. Сам Владимир охвачен похотью: помимо четырех жен у него триста наложниц в Вышгородетриста в Белгороде двести в сельце Берестове. Приходят к Владимиру волжские булгарымагометане и предлагают: Тыо князь мудр и разумен но неведомо тебе цельное вероучение.