15

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

4

4 回答 4

33

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

取自Windows 开发中心示例

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; 
        } 
} 
于 2012-07-26T12:23:36.773 回答
8
using System.Drawing;
using System.Drawing.Imaging;

Bitmap bm=Bitmap.FromFile("photo.tif");
bm.Save("photo.jpg",ImageFormat.Jpeg);
于 2013-11-19T12:15:05.243 回答
2
  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, ImageFormat.Jpeg);
                    byte[] imageBytes = m.ToArray();
                    base64String = Convert.ToBase64String(imageBytes);
                    return base64String;
                }
            }
        }
    }

< img src="data:image/jpeg;base64, @ConvertTiffToJpeg.ImageToBase64(@"c:\sample.tif")"/>

于 2019-12-27T00:35:50.663 回答
1

我们在将 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/

于 2013-03-05T11:39:00.960 回答