开发者

Merging two tiff image using c#.net

开发者 https://www.devze.com 2023-03-16 14:08 出处:网络
In my scenario i have two tiff 开发者_如何学Cimage in different location say c:/temp/img1.tiff and x:/temp/img2.tiff.

In my scenario i have two tiff 开发者_如何学Cimage in different location say

c:/temp/img1.tiff and x:/temp/img2.tiff.

I need to merge these images as a single image programatically

suggest some ideas/codes.

Thanks,

Dev


To do this using just the Framework classes, you basically do this:

  1. Load each of your TIFF images into a Bitmap object, e.g. using Image.FromFile.
  2. Save the first page with an encoder parameter Encoder.SaveFlag = EncoderValue.MultiFrame
  3. Save each subsequent page to the same file with an encoder parameter of Encoder.SaveFlag = EncoderValue.FrameDimensionPage using Bitmap.SaveAdd()

It would look something like this:

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);


There could be a couple ways to "merge" images. Here's a couple in pseudocode:

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);
   }
}
0

精彩评论

暂无评论...
验证码 换一张
取 消