2011-07-01 8 views
3

내 시나리오에서 나는 다른 위치에 두 tiff 이미지C#을 사용하여 두 tiff 이미지 병합 .net

c:/temp/img1.tiffx:/temp/img2.tiff 말한다.

이 이미지를 단일 이미지로 병합해야합니다.

은 몇 가지 아이디어/코드를 제안합니다.

감사합니다.

Dev

+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

그냥 프레임 워크 클래스를 사용하여이 작업을 수행하려면, 당신은 기본적으로이 작업을 수행 :

  1. 로드하여 TIFF 이미지의 각 비트 맵 객체, 예를 들어,로 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); 
+0

나는 또한 내 회사가 오래 전에 툴킷을 구입하기로 결정했다고 덧붙였다. 이 경우에는 관리되지 않는 GDI를 사용하는 LEADTools를 사용합니다. GDI +는 프레임 워크에서 가장 빠르게 수행되는 부분이 아니므로 코드가 지루합니다. 귀하의 예산 제약에 따라, 당신은 그것에 대해 조사하고 싶을 것입니다. –

+0

'Image'클래스에는 문자열을 사용하는 'SaveAdd'메서드가 없습니다. –

관련 문제