2017-04-22 2 views
0

다음 코드를 사용하여 LibTiff.net 라이브러리를 사용하여 Tiff 이미지의 일부를 자르지 만 이미지 색상이 false 또는 pseudo colors로 변경되었습니다. 측광 태그를 YCBCR이나 Pallete와 같은 다른 가능한 매개 변수로 변경하려했지만 결과는 비슷했습니다. 원본 이미지와 잘린 이미지가 코드 아래에 첨부됩니다. 이 문제를 해결하는 데 도움이되는 아이디어가 있으면 알려주세요.LibTiff.net을 사용하여 tiff 파일을자를 때 이미지 색상 변경

using (input) 
     { 
      int scanlineSize = input.ScanlineSize();  
      byte[][] buffer = new byte[height][]; 
      int yy = height/hRatio; 
      int xx = width/wRatio; 
      int yEnd = yo + yy; 

      // read 
      int k = 0; 
      for (int i = yo; i < yEnd ; i++) 
      { 
       buffer[k] = new byte[scanlineSize]; 
       input.ReadScanline(buffer[k], i); 
       k++; 
      } 

      // write 
      byte[][] bigHolder = new byte[height][]; 
      byte[][] holder = new byte[yy][]; 

      using (Tiff output = Tiff.Open("output.tif", "w")) 
      { 
       output.SetField(TiffTag.SAMPLESPERPIXEL, samplesPerPixel); 
       output.SetField(TiffTag.IMAGEWIDTH, xx); 
       output.SetField(TiffTag.IMAGELENGTH, yy); 
       output.SetField(TiffTag.BITSPERSAMPLE, bitsPerSample); 
       output.SetField(TiffTag.ROWSPERSTRIP, output.DefaultStripSize(0)); 
       output.SetField(TiffTag.PHOTOMETRIC, photo); 
       output.SetField(TiffTag.PLANARCONFIG, PlanarConfig.CONTIG);     

       int j = 0; 
       int w = scanlineSize/wRatio; 
       for (int i = 0; i < yy; i++) 
       { 
        bigHolder[i] = buffer[i].Skip(xo).ToArray(); 
        holder[i] = bigHolder[i].Take(w).ToArray(); 
        output.WriteScanline(holder[i], j); 
        j++; 
       } 
      } 
     } 

original image croped image

+0

iriginak 및 잘린 이미지의 TiffTag.PHOTOMETRIC 및 TiffTag.COMPRESSION 태그 값은 무엇입니까? – Bobrovsky

+0

getField를 사용하여 입력 이미지에서 TiffTag.PHOTOMETRIC을 가져 와서 출력 이미지에서 바꿉니다. 또한, 내 입력 이미지에 압축 모드가 없습니다. 나는 색깔을 바꾸는 관계가 있다는 것을 알았다. 입력 및 출력 이미지를 볼 때 Red가 Green, Green이 Blue, Red가 Blue로 변환됩니다. –

답변

0

나는 문제를 발견! 입력 TIFF가 픽셀 당 3 개의 샘플을 포함하기 때문에, "bigHolder [i] = buffer [i] .Skip (xo) .ToArray();"에서 발생한 샘플 대신에 이미지 픽셀 수를 건너 뜁니다. 그래서 xo를 SamplePerPixel * xo로 변경했고 출력 tiff는 실제 색상으로 유지됩니다.

관련 문제