이전 IMGSCAN 및 IMGEDIT 조정 도구를 사용하는 VB6 응용 프로그램에서 이전 jpeg 압축으로 다중 페이지 tiff를 생성하는 TWAIN을 통해 HP 스캐너에서 이미지를 스캔했습니다. 이제 동일한 VB6 응용 프로그램에서 TWAIN을 통해 새 Kodak 스캐너 i2600에 액세스하면 멈 춥니 다.이전 JPEG 압축으로 다중 페이지 Tiff 만들기 C#
그래서 이제는 IMGEDIT conrol을 통해 내 VB6 응용 프로그램에서 볼 수있는 다중 페이징 Tiff 파일을 스캔하고 작성하는 실행 파일을 작성하려고합니다.
난 후 아래에있는 C# 코드를 사용하여 기존 JPEG 압축과 다중 페이지 TIFF 파일을 만들려고 :내가 옛날 JPEG 압축을 달성하기 위해, 6으로 압축을 사용했다. IFD는 :
{254, 4, 1, 0}, // NewSubfileType
{256, 4, 1, width}, // ImageWidth
{257, 4, 1, length}, // ImageLength
{258, 3, 3, offset}, // BitsPerSample
{259, 3, 1, 6}, // Compression (Old JPEG)
{262, 3, 1, 6}, //PhotometricInterpretation (YCbCr)
{273, 4, 1, offset + 22}, // StripOffsets (offset IFH + entries + values of BitsPerSample & YResolution & XResolution)
{277, 3, 1, 3}, // SamplesPerPixel
{278, 4, 1, length}, // RowsPerStrip
{279, 4, 1, (uint)jpegs[i].LongLength}, // StripByteCounts
{282, 5, 1, offset + 6}, // XResolution (offset IFH + entries + values of BitsPerSample)
{283, 5, 1, offset + 14}, // YResolution (offset IFH + entries + values of BitsPerSample & YResolution)
{284, 3, 1, 1}, // PlanarConfiguration (chunky)
{296, 3, 1, 2} // ResolutionUnit
나는 성공적으로 멀티 페이지 TIFF 파일을 만들었습니다. 그러나 문제는 IMGEDIT 컨트롤 (VB6에서)이 이미지를 제대로 표시하지 않는다는 것입니다. 모든 이미지가 왜곡됩니다.
그래서 (위의 설정으로 C#을 사용하여 만든) 새 파일로 이전 tiff 파일 (vb6 응용 프로그램을 사용하여 작성한 파일)의 IFD를 분석했습니다.
올드 티파니
SUBFILETYPE 0
IMAGEWIDTH 826
IMAGELENGTH 1169
BITSPERSAMPLE 8
COMPRESSION OJPEG
PHOTOMETRIC YCBCR
FILLORDER MSB2LSB
STRIPOFFSETS System.UInt32[]
ORIENTATION TOPLEFT
SAMPLESPERPIXEL 3
ROWSPERSTRIP 8
STRIPBYTECOUNTS System.UInt32[]
XRESOLUTION 100
YRESOLUTION 100
PLANARCONFIG CONTIG
RESOLUTIONUNIT INCH
SOFTWARE System.Byte[]
TILEOFFSETS System.UInt32[]
TILEBYTECOUNTS System.UInt32[]
JPEGPROC 1
JPEGIFOFFSET 932
JPEGIFBYTECOUNT 601
JPEGRESTARTINTERVAL 0
JPEGQTABLES 3
JPEGDCTABLES 3
JPEGACTABLES 3
YCBCRSUBSAMPLING 2
새로운 TIFF 파일을 파일 :
SUBFILETYPE 0
IMAGEWIDTH 830
IMAGELENGTH 1172
BITSPERSAMPLE 8
COMPRESSION OJPEG
PHOTOMETRIC YCBCR
**< FILLORDER field missing when comparing above>**
STRIPOFFSETS System.UInt32[]
< ORIENTATION field missing when comparing above>
SAMPLESPERPIXEL 3
ROWSPERSTRIP 1172
STRIPBYTECOUNTS System.UInt32[]
XRESOLUTION 100
YRESOLUTION 100
PLANARCONFIG CONTIG
RESOLUTIONUNIT INCH
< SOFTWARE field missing when comparing above>
TILEOFFSETS System.UInt32[]
TILEBYTECOUNTS System.UInt32[]
< JPEGPROC field missing when comparing above>
< JPEGIFOFFSET field missing when comparing above>
< JPEGIFBYTECOUNT field missing when comparing above>
< JPEGRESTARTINTERVAL field missing when comparing above>
< JPEGQTABLES field missing when comparing above>
< JPEGDCTABLES field missing when comparing above>
< JPEGACTABLES field missing when comparing above>
YCBCRSUBSAMPLING 2
IFD의
이 JPEGPROC, JPEGIFOFFSET, JPEGIFBYTECOUNT, JPEGRESTARTINTERVAL, JPEGQTABLES, JPEGDCTABLES처럼 JPEGACTABLES 새로운 파일에 사용할 수 없었습니다. IMGEDIT 컨트롤이 이미지를 제대로 표시하지 못할 수도 있습니다. 어쨌든 TIFF 파일을 생성하는 동안 이러한 속성을 설정합니까?
왜 "오래된 JPEG"압축을 사용 하시겠습니까? 사양에 결함이있어서 절대로 사용해서는 안됩니다. 새롭고 잘 정의 된 JPEG 사양을 사용하지 않는 이유는 무엇입니까? – haraldK
@haraldK 클라이언트는이 VB6 응용 프로그램을 스캔에 사용합니다. 이 IMGEDIT, IMGSCAN 컨트롤은 다중 페이지 Tiff 파일의 "Old JPEG compression"만 지원합니다. 새 JPEG 압축 파일을 만들려고하면이 컨트롤이 올바른 파일로 인식하지 못합니다. –