I am new to .Net currently i am using vb.net 2005, I am i am creating an
image viewer that should display single and multiple Tiff images.
I am using a panel and picture box to create an image viewer.
I have created that to show only single tiff image.
But i need to show the images one after one if the tiff image has multiple frames.
I have counted the multiple tiff page frames using following code
Code:
Panel1.AutoScroll = True
ImageViewer.Image = Image.FromFile("C:\Documents and Settings\Administrator\Desktop\test202.tif")
ImageViewer.SizeMode = PictureBoxSizeMode.StretchImage
Dim MasterImage As Image = ImageViewer.Image
Dim oDimension As New FrameDimension(MasterImage.FrameDimensionsList(0))
Dim FrameCount As Integer = MasterImage.GetFrameCount(oDimension)
The above code gives the no of tiff pages
but i don't know how to show the frames one after one in the picturebox
Can you have solution in VB.Net or in C#.net for my problem
My Email id is [email protected]
Loading
Scott LyslePosted May 21, 2008, 1:06 PM
In c#:
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
using System.IO;
namespace MultiPageTiff
{
public class MultipageTiff
{
public int GetNumberOfPages(string sFileName)
{
//setup the image
Image img = Image.FromFile(sFileName);
//get its guid
Guid ID = img.FrameDimensionsList[0];
//get the frame dimensions
FrameDimension fd = new FrameDimension(ID);
//Gets number of pages
return img.GetFrameCount(fd);
}
public Image GetSpecificPage(string sFileName, int iPageNumber)
{
Image img = Image.FromFile(sFileName);
MemoryStream ms = null;
Image returnImage = Image.FromFile(sFileName);
try
{
ms = new MemoryStream();
Guid ID = img.FrameDimensionsList[0];
FrameDimension fd = new FrameDimension(ID);
img.SelectActiveFrame(fd, iPageNumber);
img.Save(ms, ImageFormat.Bmp);
returnImage = Image.FromStream(ms);
return returnImage;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString(), "Error");
return null;
}
finally
{
ms.Close();
}
}
public void SetTIFFCompression(string FileName, double QualityPercentage)
{
//Load a bitmap from file
Bitmap bm = (Bitmap)Image.FromFile(FileName);
//Get the list of available encoders
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
//find the encoder with the image/jpeg mime-type
ImageCodecInfo ici = null;
foreach (ImageCodecInfo codec in codecs)
{
if (codec.MimeType == "image/tiff")
ici = codec;
}
//Create a collection of encoder parameters (we only need one in the collection)
EncoderParameters ep = new EncoderParameters();
//We'll save image with QualityPercentage as compared with the original
//Create an encoder parameter for quality with an appropriate level setting
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)QualityPercentage);
//Save the image with a filename that indicates the compression quality used
string newFileName = FileName.ToLower().Replace(".tif", "_Quality_" + QualityPercentage + "%.tif");
bm.Save(newFileName, ici, ep);
}
}
}