使用c#.net合并两个tiff图像

在我的场景中,我有两个不同位置的tiff图像说

c:/temp/img1.tiffx:/temp/img2.tiff

我需要以编程方式将这些图像合并为单个图像

提出一些想法/代码。

谢谢,

开发

要仅使用Framework类来执行此操作,您基本上执行此操作:

  1. 将每个TIFF图像加载到Bitmap对象中,例如使用Image.FromFile
  2. 使用编码器参数Encoder.SaveFlag = EncoderValue.MultiFrame保存第一页
  3. 使用Bitmap.SaveAdd ()将每个后续页面保存到编码器参数Encoder.SaveFlag = EncoderValue.FrameDimensionPage的同一文件中

它看起来像这样:

 ImageCodecInfo tiff = null; foreach ( ImageCodecInfo codec in ImageCodecInfo.GetImageEncoders() ) { if ( codec.MimeType == "image/tiff" ) { tiff = codec; break; } } Encoder encoder = Encoder.SaveFlag; EncoderParameters parameters = new EncoderParamters(1); parameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.MultiFrame); bitmap1.Save(newFileName, tiff, parameters); parameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.FrameDimensionPage); bitmap2.SaveAdd(newFileName, tiff, paramters); parameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.Flush); bitmap2.SaveAdd(parameters); 

可能有几种方法可以“合并”图像。 这是一对伪代码:

 var NewImage = new Image(); ForEach (curPixel in img1) { var newColor = new Color(); newColor.RGB = (Pixel.Color.RGB + img2.PixelAt(curPixel.Location).Color.RGB) / 2 NewImage.PixelAt(curPixel.Location) = new Pixel(newColor); } ///OR int objCounter = 0; ForEach (curPixel in Image) { if(objCounter % 2 == 0){ NewImage.PixelAt(curPixel.Location) = img1.PixelAt(curPixel.Location); } else { NewImage.PixelAt(curPixel.Location) = img2.PixelAt(curPixel.Location); } }