2011-07-01 36 views
3

2個的TIFF圖像在我的情況,我有在不同位置處的兩個TIFF圖像中說合併使用C#.NET

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

我需要將這些圖像合併爲一個圖像編程

提出了一些想法/代碼。

感謝,

開發

+1

合併如何?水平/垂直連接? –

+0

我必須一個接一個(垂直)。 – Dev

+0

http://stackoverflow.com/questions/398388/convert-bitmaps-to-one-multipage-tiff-image-in-net-2-0 –

回答

0

可能有幾種方法可以 「合併」 的圖像。這裏有一對夫婦在僞代碼:

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

要做到這一點只使用框架類,你基本上做到這一點:每個TIFF圖像的

  1. 加載到一個位圖對象,例如使用Image.FromFile
  2. 保存與編碼參數Encoder.SaveFlag第一頁= EncoderValue.MultiFrame
  3. 保存每個後續頁面與Encoder.SaveFlag = EncoderValue.FrameDimensionPage編碼參數相同的文件使用Bitmap.SaveAdd()

這將是這個樣子:

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

我還會補充說我的公司很久以前決定購買一個工具包(在我們的例子中,我們使用LEADTools),它使用非託管GDI來處理這種類型的事情,因爲GDI +並不是框架中性能最好的部分,而且代碼變得乏味。根據您的預算限制,您可能需要考慮這一點。 –

+0

'圖像'類沒有一個接受字符串的'SaveAdd'方法。 –