TWAIN으로 양면 이미지를 스캔하면 그림 배열이 생기므로 별도로 저장할 수 있습니다. 이 두 이미지를 나란히 결합하여 단일 TIFF 파일로 저장해야합니다.C#의 다른 맨 아래에 TIFF 이미지를 추가하는 방법은 무엇입니까?
TIFF 이미지를 열고 두 파일을 나란히 포함하는 단일 파일로 저장하는 방법을 알려주십시오.
TWAIN으로 양면 이미지를 스캔하면 그림 배열이 생기므로 별도로 저장할 수 있습니다. 이 두 이미지를 나란히 결합하여 단일 TIFF 파일로 저장해야합니다.C#의 다른 맨 아래에 TIFF 이미지를 추가하는 방법은 무엇입니까?
TIFF 이미지를 열고 두 파일을 나란히 포함하는 단일 파일로 저장하는 방법을 알려주십시오.
TWAIN 사양을 기반으로 자신의 앱을 작성하고 있습니까? 그렇다면 TWFF_TIFFMULTI를 사용하여 다중 페이지 TIFF 파일을 가져올 수 있습니다.
var tmpFolder = _configManager.TmpFolder;
bool isUnHandleException;
//tranfer each image that's scann0ed and insert him to array,also dialogbox for a progress bar Indication
ArrayList pics = tw.TransferPictures(out isUnHandleException);
EndingScan(); tw.CloseSrc();
if (isUnHandleException) ShowException(Consts.RestartWIA);
string strFileName = "";
// join all the images that's scanned to one image tiff file
var encoder = new TiffBitmapEncoder();
BitmapFrame frame=null;
Bitmap bp = null;
IntPtr bmpptr,pixptr;
if (!(pics != null && pics.Count != 0))
{
ShowException("No Has Any pages");
return;
}
// create temp folder
CreateDirectory(tmpFolder);
int picsCount = pics.Count;
for (int i = 0; i < pics.Count; i++)
{
IntPtr img = (IntPtr)pics[i];
//Locks a global memory object and returns a pointer to the first byte of the object's memory block
bmpptr = Twain.GlobalLock(img);
//Get Pixel Info by handle
pixptr = GdiWin32.GetPixelInfo(bmpptr);
// create bitmap type
bp = GdiWin32.BitmapFromDIB(bmpptr, pixptr);
// get bitmap frame for insert him TiffBitmapEncoder
frame = Imaging.GetBitmapFrame(bp);
if (frame != null)
encoder.Frames.Add(frame);
//decease pointer reference so the gc will see there is no refernce to this obj and realse him from memory
Twain.GlobalUnlock(img);
// Get the last error and display it.
//int error = Marshal.GetLastWin32Error();
GC.Collect();
GC.WaitForPendingFinalizers();
}
// genrate file name to temp folder
strFileName = GenerateFileTemp(tmpFolder);
string strNewFileName = strFileName;
_output = new FileStream(strNewFileName, FileMode.OpenOrCreate);
encoder.Save(_output);