将tiff转换为jpg格式

时间:2012-07-26 12:07:14

标签: c# tiff jpeg

我有两页的tiff图像。 当我将文件转换为jpg格式时,我丢失了第二页。 有没有办法将tiff文件上的两个图像放入一个jpg文件中。 因为tiff文件太大我不得不减小它们的大小。有没有办法以编程方式减少tiff文件大小?它也可以解决我的问题。

4 个答案:

答案 0 :(得分:29)

由于TIFF可以包含多个帧但JPG不能,因此您需要将每个帧转换为JPG。

取自Windows Dev Center Samples

public static string[] ConvertTiffToJpeg(string fileName) 
{ 
        using (Image imageFile = Image.FromFile(fileName)) 
        { 
            FrameDimension frameDimensions = new FrameDimension( 
                imageFile.FrameDimensionsList[0]); 

            // Gets the number of pages from the tiff image (if multipage) 
            int frameNum = imageFile.GetFrameCount(frameDimensions); 
            string[] jpegPaths = new string[frameNum]; 

            for (int frame = 0; frame < frameNum; frame++) 
            { 
                // Selects one frame at a time and save as jpeg. 
                imageFile.SelectActiveFrame(frameDimensions, frame); 
                using (Bitmap bmp = new Bitmap(imageFile)) 
                { 
                    jpegPaths[frame] = String.Format("{0}\\{1}{2}.jpg",  
                        Path.GetDirectoryName(fileName), 
                        Path.GetFileNameWithoutExtension(fileName),  
                        frame); 
                    bmp.Save(jpegPaths[frame], ImageFormat.Jpeg); 
                } 
            } 

            return jpegPaths; 
        } 
} 

答案 1 :(得分:5)

using System.Drawing;
using System.Drawing.Imaging;

Bitmap bm=Bitmap.FromFile("photo.tif");
bm.Save("photo.jpg",ImageFormat.Jpeg);

答案 2 :(得分:0)

我们在将TIF文件转换为JPEG时遇到了一些问题,因为TIF格式支持免费工具包不支持的某些类型的压缩。 我搜索了互联网并尝试了一些商业工具包,但其中大多数都很难实现,有很多限制。引起我注意的工具包是leadtools,因为它支持加载和保存许多文件格式(包括具有不同压缩的TIF图像)。我们使用此工具包将图像转换为JPEG格式。您可以在以下页面中找到更多信息: http://support.leadtools.com/CS/forums/8925/ShowPost.aspx

请注意,您可以使用此免费代码转换器将任何VB.Net代码转换为C#: http://www.developerfusion.com/tools/convert/vb-to-csharp/

答案 3 :(得分:0)

public static class ConvertTiffToJpeg
{
    static string base64String = null;
    public static string ImageToBase64(string tifpath)
    {
        string path = tifpath;
        using (System.Drawing.Image image = System.Drawing.Image.FromFile(path))
        {
            using (MemoryStream m = new MemoryStream())
            {
                image.Save(m, image.RawFormat);
                byte[] imageBytes = m.ToArray();
                base64String = Convert.ToBase64String(imageBytes);
                return base64String;
            }
        }
    }
}