Search from Cycling Blog

Getting Properties of an image[VC++.NET]

Getting Properties of an Image

Language: VC++.NET

Author: Aamir Mustafa

Introduction:

This simple article will show how to get image properties. In this article I will load a photo and then its property will be shown. it will display all the properties of an image like name, image type, image size, its resolution.

How to show property:

Create an empty project and add following controls on the form.

Control

Properties

Form

Name=Form1

Text= Properties

Width=554

Height=224

Button

Name= btnLoad

Text= Load Photo

ListView

Name= lstProperties

Width=329

Height=149

Scrollable=False

Font Style=Bold

Font Size=8

ForeColor=Coral

PictureBox

Name= pic

Width=117

Height=149

BorderStyle=FixedSingle

SizeMode=StretchImage

After doing that go to view code and add following code below in public area of class Form1.

public:

Bitmap ^bitmapImage;

String ^imageFile;

After that add following just below the above code

Here we are initializing the List View so when first our program runs so we can see two columns, one for Property and second for Property value. Both columns will be added when we first launch our program. Both columns have equal width. Type of View will be detail so we can show properties in detail like a table and we will set Grid Lines to true so that we can show grid lines. We will write following code in Form1 constructor.

Form1(void)

{

InitializeComponent();

lstProperties->View=View::Details;

lstProperties->Columns->Add("Property",Convert::ToInt32(lstProperties->Width*50/100));

lstProperties->Columns->Add("Value",Convert::ToInt32(lstProperties->Width*50/100));

lstProperties->GridLines=true;

}

Now write a function called GetProperties which gets the properties of an image and shows them in list view.

private:

void GetProperties()

{

lstProperties->Items->Clear();

lstProperties->Items->Add(gcnew ListViewItem(gcnew array { "Name", System::IO::Path::GetFileNameWithoutExtension(imageFile) }));

lstProperties->Items->Add(gcnew ListViewItem(gcnew array {"Width",bitmapImage->Width.ToString()+" Pixels"}));

lstProperties->Items->Add(gcnew ListViewItem(gcnew array {"Height",bitmapImage->Height.ToString()+" Pixels"}));

lstProperties->Items->Add(gcnew ListViewItem(gcnew array {"Vertical Resolution",bitmapImage->VerticalResolution.ToString()+" Pixels/Inch"}));

lstProperties->Items->Add(gcnew ListViewItem(gcnew array {"Horizontal Resolution",bitmapImage->HorizontalResolution.ToString()+" Pixels/Inch"}));

lstProperties->Items->Add(gcnew ListViewItem(gcnew array {"Pixel Format",bitmapImage->PixelFormat.ToString()}));

lstProperties->Items->Add(gcnew ListViewItem(gcnew array {"Pallete Flags",bitmapImage->Palette->Flags.ToString()}));

}

After that add following code to the load button’s click event. This opens a dialog to load picture from the local disk.

private: System::Void btnLoad_Click(System::Object^ sender, System::EventArgs^ e)

{

FileDialog ^fileDialog = gcnew OpenFileDialog();

fileDialog->Filter = "JPG (*.jpg)|*.jpg| Bitmap (*.bmp)|*.bmp|GIF (*.gif)|*.gif|JPEG (*.jpeg)|*.jpeg|PNG (*.png)|*.png|TIFF (*.tif)|*.tif|All Files (*.*)|*.*";

fileDialog->ShowDialog(this);

pic->SizeMode = PictureBoxSizeMode::StretchImage;

imageFile = fileDialog->FileName;

if (imageFile == System::String::Empty)

return;

pic->Image = Image::FromFile(imageFile);

bitmapImage = gcnew Bitmap(imageFile);

GetProperties();

}

 

0 comments: