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.


 

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

83199. СТРАТЕГІЧНІ АСПЕКТИ ФІНАНСОВО-ЕКОНОМІЧНОЇ БЕЗПЕКИ ПІДПРИЄМСТВА 53.5 KB
  У сучасних умовах процес успішного функціонування і економічного розвитку вітчизняних підприємств багато в чому залежить від міри забезпечення їх економічної безпеки. Економічна безпека будьякого підприємства це захищеність його діяльності від негативних впливів зовнішнього середовища спроможність швидко усунути різноманітні погрози...
83200. Проблемы высвобождения и конверсии РЧС в Российской Федерации 185 KB
  Государственные решения по регулированию использования частот должны быть направлены на гармонизацию использования радиочастотного спектра в соответствии с международными договорами Российской Федерации (РФ) путем высвобождения и конверсии РЧС. В результате этих решений Постановлением Правительства РФ должна быть определена доля РЧС...
83201. КОМПОЗИЦИОННЫЕ МАТЕРИАЛЫ НА ОСНОВЕ МАГНЕЗИАЛЬНОГО ВЯЖУЩЕГО И СИНТЕТИЧЕСКОГО ВОЛЛАСТОНИТА 56.91 KB
  В статье показана возможность получения композиционных материалов на основе магнезиального вяжущего и синтетического волластонита, полученного на основе электротермофосфорного шлака, с повышенным пределом прочности при сжатии.
83202. Положительные и отрицательные черты главного героя в повести «Над пропастью во ржи» 34.56 KB
  Но для меня Холден является скорее предметом подражания нежели негодования. Углубляясь в детали в своем рассказе Холден дает понять как дороги они для него насколько настоящие они и как действительно приятно было бы встречать в жизни только таких людей. Сильнее всего в людях Холдену не нравится их желание быть тем кем они на самом деле не являются.
83204. Моя семья в Великой Отечественной войне 18.02 KB
  Я хочу рассказать о своих прадедушках и прабабушке. Мой прадедушка Белоусов Леонид Яковлевич был кадровым военным. Участвовал прадедушка и во взятии Рейхстага на стене которого потом расписался. Прадедушка вернулся с войны и еще много лет работал в колхозе Архангельского района.
83205. Томск сокровенный 12.82 KB
  За все мои прожитые годы у меня сложилось мнение в какой-то степени сокровенные чувства которые я бы не смогла рассказать на публике но именно сейчас я хочу поделиться о своей влюбленности к любимому Томску. Конечно как и в любом другом городе в Томске стоит множество памятников.
83206. Изготовление светильника, творческий проект 1.82 MB
  Столярный верстак шаблон карандаш ножовка. Изготовить шип Столярный верстак угольник линейка карандаш ножовка долото киянка. Изготовить проушину Столярный верстак угольник линейка карандаш ножовка долото киянка. Столярный верстак киянка кисть клей ПВА.
83207. Анализ научного текста 38.83 KB
  Как правило, для фиксирования точки конца титрования в комплексонометрии используют так называемые металл-индикаторы, которые представляют собой органические красители, образующие с катионами определяемых металлов растворимые в воде окрашенные комплексные соединения.