SaveAdd抛出“GDI +中发生一般错误”

时间:2013-06-27 15:31:35

标签: c# image-processing

我正在尝试按照以下链接中的说明操作:

Merging two tiff image using c#.net

然而,当我到达SaveAdd方法时,我得到“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方法上窒息。

有什么想法吗?

1 个答案:

答案 0 :(得分: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();