2013-06-27 59 views
1

我试图按照从以下链接中的说明:SaveAdd扔“在GDI发生一般性错误+”

Merging two tiff image using c#.net

然而,当我到达SaveAdd方法我得到“A一般错误发生在GDI +”

在上面的链接的解决方案并说明如何bitmap1,bitmap2或newFileName被初始化,所以我想它是与这一点,但我不知道......

这是我的代码:

string filePathA = "C:\\Users\\me\\Documents\\Projects\\TestTifMerge\\Samples\\00000516.tif"; 
    string filePathB = "C:\\Users\\me\\Documents\\Projects\\TestTifMerge\\Samples\\11164_6018188.tif"; 
    string newFileName = "C:\\Users\\me\\Documents\\Projects\\TestTifMerge\\Samples\\combined.tif"; 


    Bitmap bitmap1; 
    Bitmap bitmap2; 



    bitmap1 = (Bitmap) Image.FromFile(filePathA); 
    bitmap2 = (Bitmap) Image.FromFile(filePathB); 



    ImageCodecInfo tiff = null; 

    foreach(ImageCodecInfo codec in ImageCodecInfo.GetImageEncoders()) { 
     if(codec.MimeType == "image/tiff") { 
      tiff = codec; 
      break; 
     } 
    } 
    Encoder encoder = Encoder.SaveFlag; 
    EncoderParameters parameters = new EncoderParameters(1); 
    parameters.Param[ 0 ] = new EncoderParameter(encoder, (long) EncoderValue.MultiFrame); 

    bitmap1.Save(newFileName, tiff, parameters); 

    //Bitmap bitmapTemp = new Bitmap(bitmap1); 

    parameters.Param[ 0 ] = new EncoderParameter(encoder, (long) EncoderValue.FrameDimensionPage); 
    bitmap2.SaveAdd( parameters); 

正如你可以看到我使用的代码与链接中建议的解决方案非常相似。该代码似乎使它通过Save方法,但在SaveAdd方法中扼杀。

任何想法?

+0

仅供参考:改变如下: bitmap1 =(位图)Image.FromFile(filePathA); bitmap2 =(位图)Image.FromFile(filePathB); – kickinchicken

回答

1

我使用的代码如下。非常接近上面的内容,但我将所有内容都添加到bitmap1。

foreach(ImageCodecInfo codec in ImageCodecInfo.GetImageEncoders()) { 
         if(codec.MimeType == "image/tiff") { 
         tiff = codec; 
         break; 
         } 
        } 
        System.Drawing.Imaging.Encoder encoder = System.Drawing.Imaging.Encoder.SaveFlag; 
        EncoderParameters parameters = new EncoderParameters(1); 
        parameters.Param[ 0 ] = new EncoderParameter(encoder, (long) EncoderValue.MultiFrame); 

        bitmap1.Save(newFileName, tiff, parameters); 

        parameters.Param[ 0 ] = new EncoderParameter(encoder, (long) EncoderValue.FrameDimensionPage); 
        bitmap1.SaveAdd(bitmap2, parameters); 

        bitmap1.Dispose(); 
        bitmap2.Dispose(); 
相关问题