2
LibTiff.net을 사용하여 WPF BitmapSource를 JPEG로 인코딩 된 TIFF로 저장하는 루틴을 작성하려고합니다. LibTiff와 함께 제공되는 예제를 사용하여 나는 다음과 같은 내놓았다 :BitmapSource를 Tiff로 인코딩 된 JPEG로 저장 Libtiff.net을 사용하여
private void SaveJpegTiff(BitmapSource source, string filename)
{
if (source.Format != PixelFormats.Rgb24) source = new FormatConvertedBitmap(source, PixelFormats.Rgb24, null, 0);
using (Tiff tiff = Tiff.Open(filename, "w"))
{
tiff.SetField(TiffTag.IMAGEWIDTH, source.PixelWidth);
tiff.SetField(TiffTag.IMAGELENGTH, source.PixelHeight);
tiff.SetField(TiffTag.COMPRESSION, Compression.JPEG);
tiff.SetField(TiffTag.PHOTOMETRIC, Photometric.RGB);
tiff.SetField(TiffTag.ROWSPERSTRIP, source.PixelHeight);
tiff.SetField(TiffTag.XRESOLUTION, source.DpiX);
tiff.SetField(TiffTag.YRESOLUTION, source.DpiY);
tiff.SetField(TiffTag.BITSPERSAMPLE, 8);
tiff.SetField(TiffTag.SAMPLESPERPIXEL, 3);
tiff.SetField(TiffTag.PLANARCONFIG, PlanarConfig.CONTIG);
int stride = source.PixelWidth * ((source.Format.BitsPerPixel + 7)/8);
byte[] pixels = new byte[source.PixelHeight * stride];
source.CopyPixels(pixels, stride, 0);
for (int i = 0, offset = 0; i < source.PixelHeight; i++)
{
tiff.WriteScanline(pixels, offset, i, 0);
offset += stride;
}
}
MessageBox.Show("Finished");
}
이 이미지를 변환하고 내가 JPEG 이미지를 볼 수 있지만 색상이 엉망이된다. 나는 TIFF를위한 태그 하나 또는 두 개를 놓치고 있거나 Photometric 해석과 같은 것이 잘못되었지만 필요한 것에 대해 완전히 명확하지는 않다고 생각합니다.
건배,
엉망이 된 색상은 주로 흰색, 회색 및 빨간색 인 테스트 이미지 중 하나를 사용하여 설명하기가 다소 어려웠습니다. 흰색은 마젠타, 회색 녹색 및 빨간색 밝은 녹색이됩니다. RGB에서 BGR로 변경해도 아무런 차이가 없었습니다. 이상하게도 LZW로 저장하면 tiff와 색상이 괜찮습니다. JPEG로 압축을 변경하면이 문제가 발생합니다. 편집 : JPEG TIFF 응용 프로그램 노트에서 읽은 내용을 생각해 봅니다. 측광 해석이 잘못되었습니다. JPEG의 경우 YCBCR이어야합니다. 나는 이것을 바꿨고 지금은 모두 작동하고있다. 감사합니다. – making