我正在尝试按照以下链接中的说明操作:
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方法上窒息。
有什么想法吗?
答案 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();