2012-08-07 104 views

回答

0

我发现了一个更好的答案在下面的链接:

Convert between formats

这不仅转换JPG到TIFF格式的,但也允许其他图片格式为TIFF转换。这确实解决了我的问题。但是如果任何人都有其他想法,欢迎他们分享他们的宝贵意见。

14

如果您在.NET中创建了一个Image对象,则可以将其保存为TIFF。这是您可以选择的众多ImageFormat选项之一。

例子:

var png = Image.FromFile("some.png"); 
png.Save("a.tiff", ImageFormat.Tiff); 

你需要包括System.Drawing组件项目。该程序集将为您提供很多图像处理功能。希望有所帮助。

+0

引发异常:GDI +中发生了一般性错误。 – user1509 2012-08-07 08:23:13

+0

对于要转换的文件或通用错误中的更多详细信息,有什么特别的地方吗?很难知道你可能会得到什么样的错误,只是对你准确尝试的内容有一个模糊的概念。 – Jacob 2012-08-07 17:17:05

+0

我已经编辑了Tiff图像到Ms Paint中的gif图像。会导致错误吗? – user1509 2012-08-09 04:43:57

0

我用jpg,bmp,png和gif测试了这个。适用于tiff的单页和多页创作。将它传递给文件的完整路径名。希望它能帮助别人。 (从MSDN提取)

public static string[] ConvertJpegToTiff(string[] fileNames, bool isMultipage) 
    { 
     EncoderParameters encoderParams = new EncoderParameters(1); 
     ImageCodecInfo tiffCodecInfo = ImageCodecInfo.GetImageEncoders() 
      .First(ie => ie.MimeType == "image/tiff"); 

     string[] tiffPaths = null; 
     if (isMultipage) 
     { 
      tiffPaths = new string[1]; 
      System.Drawing.Image tiffImg = null; 
      try 
      { 
       for (int i = 0; i < fileNames.Length; i++) 
       { 
        if (i == 0) 
        { 
         tiffPaths[i] = String.Format("{0}\\{1}.tif", 
          Path.GetDirectoryName(fileNames[i]), 
          Path.GetFileNameWithoutExtension(fileNames[i])); 

         // Initialize the first frame of multipage tiff. 
         tiffImg = System.Drawing.Image.FromFile(fileNames[i]); 
         encoderParams.Param[0] = new EncoderParameter(
          System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.MultiFrame); 
         tiffImg.Save(tiffPaths[i], tiffCodecInfo, encoderParams); 
        } 
        else 
        { 
         // Add additional frames. 
         encoderParams.Param[0] = new EncoderParameter(
          System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.FrameDimensionPage); 
         using (System.Drawing.Image frame = System.Drawing.Image.FromFile(fileNames[i])) 
         { 
          tiffImg.SaveAdd(frame, encoderParams); 
         } 
        } 

        if (i == fileNames.Length - 1) 
        { 
         // When it is the last frame, flush the resources and closing. 
         encoderParams.Param[0] = new EncoderParameter(
          System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.Flush); 
         tiffImg.SaveAdd(encoderParams); 
        } 
       } 
      } 
      finally 
      { 
       if (tiffImg != null) 
       { 
        tiffImg.Dispose(); 
        tiffImg = null; 
       } 
      } 
     } 
     else 
     { 
      tiffPaths = new string[fileNames.Length]; 

      for (int i = 0; i < fileNames.Length; i++) 
      { 
       tiffPaths[i] = String.Format("{0}\\{1}.tif", 
        Path.GetDirectoryName(fileNames[i]), 
        Path.GetFileNameWithoutExtension(fileNames[i])); 

       // Save as individual tiff files. 
       using (System.Drawing.Image tiffImg = System.Drawing.Image.FromFile(fileNames[i])) 
       { 
        tiffImg.Save(tiffPaths[i], ImageFormat.Tiff); 
       } 
      } 
     } 

     return tiffPaths; 
    }