LEADTOOLS Code Tip-001

C#À» »ç¿ëÇÑ DICOM Query-Retrieve µ¥¸ð

º» µ¥¸ð³» ÄÚµå´Â LEADTOOLS¸¦ »ç¿ëÇÏ¿© DICOM ÁúÀǸ¦ »ý¼ºÇÏ°í º¹±¸ÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù. ¾Æ·¡ »çÇ×Àº À̸¦ À§ÇÑ ÁÖ¿ä ½ºÅ´µéÀ» º¸¿©ÁÝ´Ï´Ù :

1. Building a study based query.

2. Implementing date range query.

3. Retrieving a whole series with one command by sending a series level C-Move request.

4. Extracting different DICOM attributes from a C-Find response.

5. Displaying thumbnails for images in a DICOM series.

6. Logging DICOM communication messages.

7. Using LEADTOOLS COM objects in C#

Click here to download the demo




LEADTOOLS Code Tip-002

ºñµð¿À ÄÁÆÛ·±½º ¾îÇø®ÄÉÀÌ¼Ç »ý¼ºÇϱâ

´ÙÀ½°ú °°Àº VB6 ÄÚµå´Â Ŭ¶óÀ̾ðÆ®-¼­¹ö¿ë ºñµð¿À, ¿Àµð¿À ¹× µ¥ÀÌÅÍ Åë½ÅÀ» ¼öÇàÇϱâ À§ÇÑ ÁÖ¿ä ½ºÅǵéÀ» º¸¿©ÁÝ´Ï´Ù. ¿ÏÀüÇÑ ÄÚµå´Â LEAD v14.5 Multimedia SDK ¶Ç´Â Video Conferencing SDK ³»¿¡ Æ÷ÇԵǾî ÀÖ´Â LEAD NetServer ¹× LEAD NetClient µ¥¸ðµéÀÇ ¿¹Á¦ ¼Ò¿À½º¸¦ ÂüÁ¶Çϱ⠹ٶø´Ï´Ù.

Server side:

Dim sServer As String
Dim NetMux as LMNet

'set the target format:
ltmmCaptureCtrl.TargetFormat = ltmmCapture_TargetFormat_NET

' after selecting video and/or audio devices (both assumed)
' and compressors:
..................

Client side:

' set the player source:
Dim sServer As String

sServer = "ltsf://10.1.1.200"
ltmmPlayCtrl.SourceFile = sServer

' if the AutoStart property is not TRUE, you need to run the player:
ltmmPlay.Run
..................

For the complete code tip click here



½ºÆ®¸² ¹Ìµð¾î ÆÄÀϵé·Î »ç¿ëÀÚÀÇ HTML³» Cab ÆÄÀÏÀ» »ç¿ëÇϱâ

¾Æ·¡´Â LEADTOOLS Video on Demand SDK¸¦ »ç¿ëÇÏ¿© Ç¥ÁØ IIS À¥¼­¹ö ¶Ç´Â Windows Media ¼­¹ö·Î ºÎÅÍÀÇ ¹Ìµð¾î ½ºÆ¼¸®¹ÖÀ» Ç÷¹ÀÌÇϱâ À§ÇØ ÀÛ¾÷ÇÑ CAB ÆÄÀÏ ¿ë ÄÚµåÀÔ´Ï´Ù. ù¹ø° ½ºÅÇÀº HTML HEAD ¼½¼Ç¿¡ Microsoft MediaPlayer °´Ã¼¸¦ ·£´õ¸µÇϱâ À§ÇØ ´ÙÀ½°ú °°Àº Äڵ带 Ãß°¡ÇÏ´Â °Í ÀÔ´Ï´Ù :

<SCRIPT language="JavaScript" type="text/javascript">
function w(s){
document.write(s+'\n');
}
function renderActiveX(vid, vidwidth, vidheight){
w('<OBJECT width="'+vidwidth+'" height="'+vidheight+'"');
w('classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"');
w('codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version
=5,1,52,701" type="application/x-oleobject"');
w('standby="Loading Microsoft Windows Media Player components..." id="mediaPlayer">');
w('<PARAM name="fileName" value="'+vid+'">');
w('<PARAM name="animationatStart" value="true">');
w('<PARAM name="transparentatStart" value="true">');
w('<PARAM name="autoStart" value="true">');
w('<PARAM name="showControls" value="false">');
w('<PARAM name="loop" value="true">');
w('</OBJECT>');
.............................

For the complete code tip click here.

Âü°í·Î, ´õ ÀÚ¼¼ÇÑ ¼³¸íÀº LEADTOOLS Streaming Video on Demand SDK ³»ÀÇ SampleVideoStreaming.htm À» ÂüÁ¶¹Ù¶ø´Ï´Ù.



°£´ÜÇÑ DVD À̹ÌÁö »ý¼º

¾Æ·¡ÀÇ µ¥¸ð´Â LEADTOOLS¸¦ »ç¿ëÇÏ¿© °£´ÜÇÑ DVD À̹Ì¡ ¾îÇø®ÄÉÀ̼ÇÀ» Á¦ÀÛÇÏ´Â ¹æ¹ýÀ» ¼Ò°³ÇÑ ¿¹Á¦ÀÔ´Ï´Ù.

Click here to download the sample application




LEADTOOLS Code Tip-003

Æ®·£½ºÆÛ ¿É¼ÇµéÀ» º¯°æÇϱâ À§ÇÑ TWAIN High-level ÇÔ¼öµéÀÇ »ç¿ë

¾Æ·¡ ÄÚµå ÆÁÀº LEADTOOLS.NETÀ» »ç¿ëÇÑ ½Å±Ô Twain ÇÏÀÌ·¹º§ ÇÔ¼öµéÀÇ ¿¹Á¦·Î¼­, ±â´Éµé¿¡ ´ëÇÑ ·Î¿ì·¹º§ Á¤º¸¸¦ ÀÎÁöÇÒ ÇÊ¿ä¾øÀÌ Æ®·£½ºÆÛ ¿É¼ÇµéÀ» ¿ëÀÌÇÏ°Ô º¯°æÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù


// ÀÌ ÇÔ¼ö´Â ÆäÀÌÁö¸¦ ȹµæÇÏ°í ÆÄÀÏ Æ®·£½ºÆÛ ¸ðµå¸¦ »ç¿ëÇÏ¿© ±× ÆäÀÌÁö¸¦ ÆÄÀÏ·Î ÀúÀåÇÒ °ÍÀÓ

private void AcquireUsingFileMode(TwainSession session)
{
try
{
// ÆÄÀÏ Æ®·£½ºÆÛ¸ðµå°¡ Áö¿øµÇ´ÂÁöÀÇ ¿©ºÎ¸¦ äũ
if (session.IsFileTransferAvailable == false)
{
// ÆÄÀÏ Æ®·£½ºÆÛ¸ðµå°¡ Áö¿øµÇÁö ¾ÊÀ½
MessageBox.Show(this, "File transfer mode is not supported!");
return;
}
// Ãʱâ Æ®·£½ºÆÛ ¿É¼ÇµéÀ» ¾ò±â
session.GetTransferOptions();
// Æ®·£½ºÆÛ ¸ðµå¸¦ ÆÄÀÏ·Î ¼³Á¤Çϱâ
session.TransferMode = TwainTransferModes.TwainTransferFile
// Æ®·£½ºÆÛ ÆÄÀÏÆ÷¸ä ¼³Á¤Çϱâ
session.TransferFileFormat = (int)TwainCapabilityValue.FileFormatBmp;
// Æ®·£½ºÆÛ ÆÄÀÏ¸í ¼³Á¤Çϱâ, ±× ÆÄÀϸíÀº ȹµæµÈ ÆäÀÌÁö¸¦ ÀúÀåÇϱâ À§ÇØ »ç¿ëµÉ °ÍÀÓ
session.TransferFileName = @"c:\test.bmp";
// update transfer options
session.SetTransferOptions();
// ¼Ò¿À½º·ÎºÎÅÍ ÆäÀÌÁö¸¦ ȹµæÇÏ°í À̸¦ ÆÄÀÏ·Î ÀúÀåÇϱâ
session.Acquire(TwainUserInterfaceFlags.Show |
TwainUserInterfaceFlags.Modal);
MessageBox.Show(this, "Acquired page is saved to file", "Acquire to File");
}
catch (Exception ex)
{
// ½ÇÆÐ ¹ß»ý
MessageBox.Show(this, ex.Message);
}
}



.NET ȯ°æ¿¡¼­ ICC ÇÁ·ÎÆÄÀϵéÀ» »ý¼ºÇÏ°í ¼öÁ¤Çϱâ

¾Æ·¡ÀÇ ¸µÅ©´Â »õ·Î¿î ICC ÇÁ·ÎÆÄÀÏÀ» »ý¼ºÇÏ°í ÀÌ¿¡ ű׵éÀ» Ãß°¡ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇØ ¼³¸íÇØ ÁÝ´Ï´Ù. À̵é ű׵éÀÇ Çϳª´Â ½ºÅ©·¡Ä¡·ÎºÎÅÍ »ý¼ºµÇ¸ç, ´Ù¸¥ ű״ ±âÁ¸ÀÇ ICC ÇÁ·ÎÆÄÀϷκÎÅÍ ÃëÇØÁö°í, ¼öÁ¤µÇ°í, ±×¸®°í³ª¼­ »õ·Î¿î ICC ÇÁ·ÎÆÄÀÏ¿¡ Ãß°¡µÉ °Í ÀÔ´Ï´Ù. ÃÖÁ¾ ű״ ¶Ç ´Ù¸¥ ICC ÇÁ·ÎÆÄÀϷκÎÅÍ ÃëÇØÁö°í »õ·Î¿î ICC ÇÁ·ÎÆÄÀÏ¿¡ ÀÖ´Â ±×´ë·Î Ãß°¡µÉ °Í ÀÔ´Ï´Ù. ÀüüÀûÀÎ ¼ÀÇà ÄÚµå´Â ¿©±â¸¦( click here ) ÂüÁ¶¹Ù¶ø´Ï´Ù.


LEADTOOLS Code Tip-004

LEADTOOLS for .NET 2.0 ¹× Visual Studio 2005 Tutorial

¾Æ·¡´Â LEADTOOLS RasterimageViewer.NET ÄÁÆ®·ÑÀ» µ¿ÀûÀ¸·Î Á¦ÀÛÇÏ°í À̸¦ ÇϳªÀÇ Æû¿¡ Ãß°¡ ¹× ÇϳªÀÇ À̹ÌÁö¸¦ ·ÎµåÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÑ °¡À̵åÀÔ´Ï´Ù. LEADTOOLS v14.5 for .NET 2.0, Visual Studio 2005 ¹× Microsoft .NET Framework 2.0ÀÇ ¼³Ä¡ ȯ°æÀÌ ¿ä±¸µË´Ï´Ù.


  • Visual Studio 2005¸¦ ½ÃÀÛÇÏ°í ½Å±Ô Visual Basic Windows ApplicationÀ» Á¦ÀÛ.
  • ÁÖ¸Þ´º¿¡¼­ Project¸¦ ¼±ÅÃÇÏ¿© Add Reference ¸Þ´º¸¦ Ŭ¸¯.
  • Add Reference ´ÙÀ̾ó·Î±×¿¡¼­, Browse ÅÇÆäÀÌÁö¸¦ Ŭ¸¯ÇÏ°í ´ÙÀ½ÀÇ Æú´õ¸£ À̵¿:
    C:\Program Files\LEAD Technologies, Inc.\LEADTOOLS 14.5\Bin\Dotnet\v20
  • ´ÙÀ½°ú °°Àº LEADTOOLS DLLÀ» ¼±ÅÃÇÏ°í OK¸¦ Ŭ¸¯:
    Leadtools.dll
    Leadtools.Codecs.dll
    Leadtools.WinForms.dll
  • ±×°ÍÀÇ Load À̺¥Æ®¿¡ ÇϳªÀÇ À̺¥Æ®¸¦ Ãß°¡Çϱâ À§ÇØ Form1À» ´ÙºíŬ¸¯, IDE´Â Äڵ庸±â·Î ½ºÀ§Ä¡ÇÒ °ÍÀÓ, Form1_Load ¸Þ¼Òµå¿¡ ´ÙÀ½°ú °°Àº ¶óÀεéÀ» Ãß°¡:

Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
' Add a RasterImageViewer control to the form
Dim viewer As New Leadtools.WinForms.RasterImageViewer
viewer.Dock = DockStyle.Fill
viewer.SizeMode = _
Leadtools.WinForms.RasterViewerSizeMode.FitIfLarger
Controls.Add(viewer)
viewer.BringToFront()

' Tell the RasterCodecs object where to find the LEADTOOLS codecs Leadtools.Codecs.RasterCodecs.CodecsPath = _

"C:\Program Files\LEAD Technologies, Inc.\LEADTOOLS 14.5\Bin\Dotnet\v20"
' Create a new RasterCodecs object to load files
Dim codecs As New Leadtools.Codecs.RasterCodecs

' Load and view an image into the viewer
viewer.Image = codecs.Load( _
"C:\Program Files\LEAD Technologies, Inc.\LEADTOOLS 14.5\Images\Image1.cmp")
End Sub
End Class

  • F5 ¶Ç´Â Ctrl-F5 Å°¸¦ Ãļ­ ÇÁ·ÎÁ§Æ®¸¦ ºôµå ¹× ¼öÇà

LEADTOOLS Code Tip-005

¸Þ¸ð¸®³» ÇϳªÀÇ JPEG À̹ÌÁö¸¦ ¾ÐÃàÇÏ´Â µ¿¾È ±× À̹ÌÁö¸¦ ·Îµå ¹× µð½ºÇ÷¹ÀÌÇϱâ
(Mobile Imaging SDK¿¡ ´ëÇÑ ¿¹Á¦)

¾Æ·¡´Â LEADTOOLS Mobile ImagingÀ» »ç¿ëÇÏ¿© ¸ð¹ÙÀÏ µð¹ÙÀ̽º»ó¿¡ ¸Þ¸ð¸® ¸®¼Ò¿À½º¸¦ ÀúÀåÇÏ´Â ¹æ¹ýÀ¸·Î, JPEG À̹ÌÁö¸¦ ¸Þ¸ð¸®³»¿¡ ¾ÐÃàÀ» ÇÏ°í ÀÖ´Â µ¿¾È ±× À̹ÌÁö¸¦ ·Îµå ¹× µð½ºÇ÷¹ÀÌÇÒ ¼ö ÀÖ´Â ¿¹Á¦Äڵ带 º¸¿©ÁÝ´Ï´Ù.

// LEADTOOLS Viewer Control À» »ý¼ºÇÏ°í À̸¦ »ç¿ëÀÚ Æû¿¡ Ãß°¡


RasterImageViewer viewer;
viewer = new RasterImageViewer();
viewer.SizeMode = RasterViewerSizeMode.Fit;
viewer.Bounds = ClientRectangle;
Controls.Add(viewer);
viewer.BringToFront();


// LEADTOOLS Codecs °´Ã¼¸¦ »ý¼ºÇÏ¿© À̸¦ ÇϳªÀÇ À̹ÌÁö¸¦ ·ÎµåÇϱâ À§ÇØ »ç¿ë


RasterCodecs codecs = new RasterCodecs();
codecs = new RasterCodecs();


// ¸Þ¸ð¸®¸¦ ÀúÀåÇϱâ À§ÇØ, ¸Þ¸ð¸® À̹ÌÁöµé³»¿¡ ¾ÐÃàÀ» È°¼ºÈ­


codecs.Options.Load.Compressed = true;
codecs.Options.Load.SuperCompressed = true;


// À̹ÌÁö ÆÄÀÏÀ» ·Îµå


viewer.Image = codecs.Load(@"\d:\temp\test.jpg",
0, Leadtools.Codecs.CodecsLoadByteOrder.Bgr, 1);

LEADTOOLS Code Tip-006

MPEG-4»ç¿ëÇÑ ºñµð¿À ÄÁÆÛ·±½Ì

LEADÀÇ ½Å±Ô MPEG-4 ÀÎÄÚ´õ´Â 2°³ÀÇ Ãâ·Â Æ÷¸ä³»(MP4V Ç¥ÁØ ¹× LMP4) °íÇ°Áú ºñµð¿À Ãâ·ÂÀ» º¸ÀåÇÕ´Ï´Ù. LMP4´Â LEAD °íÀ¯ÀÇ MPEG-4 ºñµð¿À·Î, ´õ ³ôÀº ¾ÐÃàÀ²À» ÀÚ¶ûÇÕ´Ï´Ù. ¾Æ·¡ÀÇ C# ÄÚµå´Â ¹Ì¸® Á¤ÀÇÇÏ´Â ¼³Á¤Á¶°Çµé¿¡ ÀÇ°Å °íÇ°Áú ºñµð¿À¸¦ ½ºÆ¼¸²Çϱâ À§ÇÑ MPEG-4 ÀÎÄÚ´õ¸¦ ÇÁ·Î±×·¥ÀûÀ¸·Î »ý¼ºÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.

LMMP4EncoderLib.LMMP4Encoder MPEG4;
MPEG4 = ltmmCapture.GetSubObject(11) as LMMP4EncoderLib.LMMP4Encoder;
MPEG4.OutputFrameRate = 15;
MPEG4.PFrames = 10;
MPEG4.BFrames = 0;
MPEG4.SearchWidth = 8;
MPEG4.SearchHeight = 8;
MPEG4.QFactor = 9;
MPEG4.QuantType = eQuantType.LMP4_QUANTTYPE_Linear;
MPEG4.MotionAlgorithm = eMotionAlgorithm.LMP4_MOTIONALGORITHM_FastSearch;
MPEG4.MotionAccurancy = eMotionAccuracy.LMP4_MOTIONACCURACY_HalfPixel;
MPEG4.MotionVectorPerMacroblock = eMotionVectorPerMacroblock.LMP4_MOTIONVECTOR_OnePerMacroblock;
MPEG4.OutputFormat = eOutputFormat.LMP4_OUTPUTFORMAT_mp4v;
MPEG4.SuperCompression = false;

LEADTOOLS Code Tip-007

ÀÓÀÇ ÆÄÀÏÀ» ABC Æ÷¸äÀ¸·Î º¯È¯Çϱâ

¾Æ·¡ÀÇ URL ¸µÅ©´Â ÀÓÀÇ ÆÄÀÏÀ» ABC Æ÷¸äÀ¸·Î º¯È¯ÇØ ÁÖ´Â Visual Studio 2005 C# ÇÁ·ÎÁ§Æ®ÀÔ´Ï´Ù. °³¹ßÀÚ´Â ÇϳªÀÇ ÆÄÀÏÀ» ¼±ÅÃÇÏ°í, ±× ÆÄÀÏÀÇ ÇÑ ÆäÀÌÁö¸¦ ·ÎµåÇϰųª, ¼±ÅÃÇÑ QFactor¸¦ »ç¿ëÇÏ¿© Àüü ÆÄÀÏÀ» ABC·Î º¯È¯Çϰųª, À̸¦ CCITT Group 4·Î ÀúÀåÇϰųª ¶Ç´Â, °¢°¢ÀÇ QFactorµéÀ» »ç¿ëÇÏ¿© ±× ÆÄÀÏÀ» ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. À̶§, ½ºÄ³´× ±â´ÉÀÌ ¶ÇÇÑ Æ÷ÇԵǸç, °¢°¢ÀÇ ¿ÀÆÛ·¹À̼ÇÀº(½ºÄ³´× Á¦¿ÜÇÑ) ½Ã°£ÀÌ ¸Å°ÜÁý´Ï´Ù (Áï, ÇÑ ÆäÀÌÁö¸¦ ·ÎµùÇÏ°í ÇÑ ÆäÀÌÁö¸¦ ÀúÀå). ¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇÑ °¢°¢ÀÇ ¿ÀÆÛ·¹À̼ÇÀº 10¹ø¾¿ ¼öÇàÇϵµ·Ï °­Á¦Çϸç ÀÌÈÄ ±× Æò±Õ ½Ã°£À» Ãâ·ÂÇÕ´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀº »ç¿ëÀÚ/°³¹ßÀÚÀÇ ÆÄÀÏ Å¸ÀÔ¿¡ ¸Â´Â ÃÖÀûÀÇ QFactor°¡ ¾î¶² °ÍÀÎÁö¸¦ º¸¿©ÁÝ´Ï´Ù.

C# ÇÁ·ÎÁ§Æ®¸¦ º¸±âÀ§ÇØ ¿©±â¸¦ Ŭ¸¯¹Ù¶ø´Ï´Ù.

ABC ¾ÐÃàÀº CCITT Group 4 TIFF º¸´Ù 2/3 ±îÁö ±× ÆÄÀÏÅ©±â¸¦ ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÇ ABC QFactorµéÀº ¼Õ½Ç ¾ÐÃàÀ¸·Î ¾à°£ÀÇ Ç°Áú ¼Õ½ÇÀ» ¾ß±âÇÕ´Ï´Ù. Load Fast check box ¸¦ äŷÇÔÀ¸·Î¼­ ¼Óµµ¸¦ ÃÖÀûÈ­ÇÒ ¼ö ÀÖÀ¸¸ç ±× ABC ÆÄÀϵéÀº ´õ ºü¸£°Ô ·ÎµåÇÒ °Í ÀÔ´Ï´Ù. 'Modified 3 Fast'´Â °¡Àå ÀÛÀº ÆÄÀÏ »çÀÌÁ Á¦°øÇϳª ¾ÐÃàÇϴµ¥ ¾à°£ÀÇ ½Ã°£À» ÇÊ¿ä·Î ÇÕ´Ï´Ù. ¶ÇÇÑ, À̶§ Ç°Áú»ó Å« ¼Õ½ÇÀÌ ¿¹»óµË´Ï´Ù. ¿ì¸®ÀÇ Å×½ºÆ® °á°ú, ´ëºÎºÐÀÇ À̹ÌÁö ŸÀԵ鿡 ´ëÇØ 'LossyFast'°¡ °¡Àå ÀûÇÕÇÑ ¿É¼ÇÀÓÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. À̶§, ±× ÆÄÀÏ Å©±âµéÀº CCITT Group 4 º¸´Ù 1/2 Á¤µµ µÇ¸ç, ±× ¾ÐÃà½Ã°£Àº ¾à°£ÀÇ Ç°Áú ¼Õ½ÇÀ» °¨¼öÇÑ »óÅ¿¡¼­ °¡Àå ºü¸¨´Ï´Ù. ¾Æ·¡ÀÇ Å×À̺íÀº CCITT Group 4 ¿Í ¼­·Î´Ù¸¥ °¢°¢ÀÇ QFactorµéÀ» ºñ±³ÇÑ °á°ú¸¦ º¸¿©ÁÝ´Ï´Ù. ´Ù¸¥ ÆÑÅÍ´Â ´Ù¸¥ ¹êµåÀ§½º(56KÀÇ °æ¿ì)¿¡ ±â¹ÝÇÑ ¾÷·Îµå ½Ã°£ÀÔ´Ï´Ù. ±× µ¥ÀÌŸ¸¦ º¸¸é ¾ËµíÀÌ, ABC´Â ÀÛÀº ¹êµåÀ§½ºµé»ó¿¡ ´õ ÀÛÀº ÆÄÀÏ Å©±â¸¦ À¯ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¸, ¸Å¿ì Å« ¹êµåÀ§½ºÀÇ °æ¿ì ABC´Â ´ú È¿À²ÀûÀÔ´Ï´Ù.

LEADTOOLS Code Tip-008

¶ó½ºÅÍ À̹ÌÁö¸¦ MRC PDF ÆÄÀÏ·Î ¾ÐÃàÇϱâ

MRC¶õ ¹«¾ùÀΰ¡?

MRC(Mixed Raster Content)´Â ÇÑ ÆäÀÌÁö ¶Ç´Â À̹ÌÁö¸¦ ´õ ÀÛÀº ¼¼±×¸ÕÆ®µé³»·Î ÂÉ°³ ³Ö°í, ±× ¼¼±×¸ÕÆ®µé¿¡ ´ëÇØ ÀûÁ¤ ¾ÐÃàÀ» »ç¿ë.ÀúÀåÇÔÀ¸·Î¼­ ¾ÐÃà¾çÀ» ÃÖ´ëÈ­ÇÏ´Â ÇϳªÀÇ ¾ÐÃà ±â¹ýÀÔ´Ï´Ù. À̸®ÇÏ¿©, PDF ÆÄÀÏÀÇ ÇÑ ÆäÀÌÁö´Â JPEG ¾ÐÃàµÈ ÇϳªÀÇ À̹ÌÁö, JBIG2 ¾ÐÃàµÈ ¾à°£ÀÇ ÅؽºÆ® ¹× CCITT ¾ÐÃàµÈ ¶Ç ´Ù¸¥ ¿µ¿ªÀ» °¡Áú ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ Àüü °øÁ¤Àº Ç¥ÁØ ¶ó½ºÅÍ PDF ÆÄÀϺ¸´Ù ´õ ÁÁÀº Ç°Áú°ú ´õ ³ôÀº ¾ÐÃàÀ²À» °®´Â PDF ÆÄÀÏÀ» »ý¼ºÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù. ÀÌ´Â ÇÑ ÆäÀÌÁö¿¡ ´Ù¾çÇÑ ÇüÅÂÀÇ µ¥ÀÌŸµéÀÌ È¥ÀçµÇ¾î ÀÖ´Â À̹ÌÁöµé¿¡ ƯÈ÷ È¿°úÀûÀÔ´Ï´Ù. ¿¹¸¦µé¾î, ÆäÀÌÁöÀÇ ¾Æ·¡ºÎºÐÀº Èæ¹é ÅýºÆ®ÀÌ°í À­ºÎºÐÀº Ä®¶ó À̹ÌÁöÀÎ °æ¿ì, ±× À­ºÎºÐÀÇ Ä®¶ó À̹ÌÁö¸¦ À¯ÁöÇϱâ À§ÇØ Åë»ó Àüü À̹ÌÁö¸¦ Ä®¶ó À̹ÌÁö·Î ÀúÀåÇÏ´Â °ÍÀÌ º¸ÅëÀ̳ª, ÀÌ·¸°Ô µÇ¸é ±× ÆÄÀÏ Å©±â°¡ ¸Å¿ì Ä¿Áú °Í ÀÔ´Ï´Ù. MRC ¾ÐÃà±â¹ýÀº ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϴµ¥ ÀûÇÕÇÑ ¼Ö·ç¼ÇÀ¸·Î, »ç¿ëÀÚ´Â À̹ÌÁö¸¦ ¼¼±×¸ÕÆ®º°·Î ±¸ºÐÇÏ¿© ÂÉ°¶ ¼ö ÀÖÀ¸¸ç, ±× °¢°¢ÀÇ ¼¼±×¸ÕÆ®¿¡ ´ëÇØ ÀûÇÕÇÑ ¾ÐÃàÀ» °¢±â Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

PDF Plug-inÀº ¶ÇÇÑ ´õ ÀÛÀº PDF ÆÄÀϵéÀ» ÀúÀåÇÒ ¼ö ÀÖµµ·Ï PDF ¾ÐÃà¿¡ ´ëÇÑ Áö¿øÀ» Á¦°øÇÕ´Ï´Ù. ¾Æ·¡ÀÇ ÄÚµå´Â Leadtools .NET ¶óÀ̺귯¸®µéÀ» »ç¿ëÇÑ °ÍÀ¸·Î, ÇϳªÀÇ RasterImage¸¦ ÃëÇØ À̸¦ MRC PDF ÆÄÀÏ·Î ¾ÐÃàÇÏ´Â ¹æ¹ýÀ» Á¦½ÃÇÑ C#¿ë ¿¹Á¦ÀÔ´Ï´Ù.


using Leadtools.Codecs;
using Leadtools.Pdf;
using Leadtools.Mrc;

private void CreatePdfMRCDocument(Leadtools.IRasterImage image, RasterCodecs codecs)
{

PdfCompressor pdfCompressor = new Leadtools.Pdf.PdfCompressor();
PdfCompressorCompressionTypes compressionTypes= new
PdfCompressorCompressionTypes();
PdfCompressorOptions pdfCompressorOptions = new PdfCompressorOptions();

//Sets compression types needed for each segment
compressionTypes.Comp1Bit = PdfCompressor1BitCompression.Zip1Bit;
compressionTypes.Comp2Bit = PdfCompressor2BitCompression.Lzw2Bit;
compressionTypes.CompPicture = PdfCompressorPictureCompression.JpgPic;
compressionTypes.QFactor = 2;

//Flags for used compression types should be set
compressionTypes.Flags = EnabledCompressionsFlags.EnableOneBit |
EnabledCompressionsFlags.EnableTwoBit |
EnabledCompressionsFlags.EnablePicture;

pdfCompressor.SetCompression(compressionTypes);

//Specify suitable profiles for input and output image
pdfCompressorOptions.ImageQuality = PdfCompressorImageQuality.ComputerGenerated;
pdfCompressorOptions.OutputQuality = PdfCompressorOutputQuality.Excellent;
pdfCompressorOptions.Flags = SegmentationOptionsFlags.FavorOneBit |
SegmentationOptionsFlags.WithBackground;

pdfCompressor.SegmentImage += new PdfCompressorSegmentImageEventHandler(pdfCompressor_SegmentImage);
pdfCompressor.Insert(image, pdfCompressorOptions);

pdfCompressor.Write(codecs, @"c:\image.pdf");
}

private void pdfCompressor_SegmentImage(object sender, PdfCompressorSegmentImageEventArgs e)
{
//This will prevent addition to any segment with type background
if(e.Segment.SegmentType == SegmentTypeFlags.Background)
e.Cancel = true;
else

e.Cancel = false;

}


LEADTOOLS Code Tip-009

¸ðµç ¹ÙÄÚµå ŸÀÔµéÀ» Àбâ/¾²±â À§ÇÑ ÇÔ¼öÄÝ ¿¹Á¦

¸ðµç ¹ÙÄÚµå ŸÀÔµéÀ» Àбâ À§ÇÑ ÇÔ¼ö ¹× ¸ðµç ¹ÙÄÚµå ŸÀÔµéÀ» ¾²±â À§ÇÑ ÇÔ¼ö¸¦ ÄÝÇÏ´Â ¿¹Á¦ÀÔ´Ï´Ù.


// This example shows the barcode coding with LEADTOOLS
#include "l_bitmap.h"
#include "ltbar.h"

pBARCODEDATA TestRead(L_TCHAR * szImageFileName)
{
// Bitmap handle to hold the loaded image.
BITMAPHANDLE Bitmap;
// Barcode data pointer to hold results array.
pBARCODEDATA pResults = NULL;

// This is a LEADTOOLS function that loads any image in any format.
L_LoadBitmap(szImageFileName,&Bitmap,sizeof(BITMAPHANDLE),
0,ORDER_BGR, NULL,NULL);
// Read the barcodes in the image
L_BarCodeRead(&Bitmap,NULL,BARCODE_1D_READ_ANYTYPE,
0,0,0,NULL,NULL,NULL,&pResults, sizeof(BARCODEDATA));
// Free bitmap
L_FreeBitmap(&Bitmap);
// Return the results
return pResults;
}


LEADTOOLS Code Tip-010

¹ÙÄڵ带 »ç¿ëÇÑ À̹ÌÁöµéÀÇ ÀÚµ¿ º¸Á¤

 

»ç¿ëÀÚ°¡ ÇϳªÀÇ ÆûÀ» ½ºÄµÇÒ¶§ À̹ÌÁöµéÀÇ È¸Àü, È®´ë, °¨¼â ¶Ç´Â À§Ä¡ º¯°æµî°ú °°Àº º¯È¯À» ÇÔ²² ¼öÇàÇÏ´Â °æ¿ì°¡ Á¾Á¾ ÀÖ½À´Ï´Ù. ±×·±µ¥, ÀÌ·¯ÇÑ º¯È¯ ÀÛ¾÷Àº ½ºÄµÇÏ°íÀÚ ÇÏ´Â ¿ø·¡ÀÇ Æû»ó ¿©·¯ ´Ù¸¥ ºÎºÐµéÀ» ¿Ã¹Ù·Î ±¸ºÐ/°ËÃâ/ÀνÄÇÏ´Â µ¥ ÀÖ¾î »ó´çÇÑ Àå¾Ö¸¦ À¯¹ß½Ãŵ´Ï´Ù.

ÀÌ °æ¿ì, ¹ÙÄÚµå´Â ±× ¿ø·¡ Æû»óÀÇ ¿©·¯ ´Ù¸¥ºÎºÐµéÀ» ±¸ºÐ/À§Ä¡ ÃøÁ¤/º¹¿øÇϴµ¥ ÀÖ¾î µµ¿òÀ» ÁÖ´Â µî·Ï ¸¶Å©·Î¼­ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. ¹ÙÄÚµå´Â ¿ø·¡ÀÇ Æû¿¡ Ãß°¡µÇ´Â º¯È¯µéÀ» Á¤ÀÇ/±¸º°Çϴ ƯÁ¤ À§Ä¡ Á¤º¸µéÀ» °®°í ÀÖÀ» ¼ö ÀÖÀ¸¸ç, ±× Á¤º¸·Î¼­ ½ºÄµµÈ Æû³»ÀÇ ¿©·¯ ´Ù¸¥ ºÎºÐ/À̹ÌÁöµéÀÇ À§Ä¡ ¹× Å©±â¸¦ ¿ø·¡ÀÇ Æû°ú µ¿ÀÏÇÏ°Ô º¸Á¤/Á¤Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ ¿¹Á¦ ÄÚµå´Â ¹ÙÄڵ带 »ç¿ëÇÏ¿© ÇϳªÀÇ À̹ÌÁöÀÇ È¸Àü °¢µµ¸¦ °ËÃâÇÑ ´ÙÀ½ À̸¦ ½ºÄµÈÄ º¸Á¤/Á¤Á¤ÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.


// This example shows how to detect the rotation angle of an image and correct it by using //barcodes
#include "l_bitmap.h"
#include "ltbar.h"
//Compute the barcode center based on its four corner points
L_VOID ComputeBarcodeCenter(LPPOINT p1, LPPOINT p2, LPPOINT p3, LPPOINT p4,
L_INT * pnCx, L_INT *pnCy)
{
*pnCx = (p1->x + p2->x + p3->x+ p4->x)/4;
*pnCy = (p1->y + p2->y + p3->y+ p4->y)/4;
}
//Compute the barcode angle
L_VOID ComputeBarcodeAngle(LPPOINT p1, LPPOINT p2, LPPOINT p3, LPPOINT p4,
L_INT * pnAngle)
{
L_DOUBLE dx, dy, dAngle;
L_DOUBLE pi = 3.1415926535;

dx = ((p4->x - p1->x) + (p3->x- p2->x))/2;
dy = ((p4->y - p1->y) + (p3->y- p2->y))/2;

dAngle = atan2(dy, dx);
*pnAngle = (L_INT)(dAngle*18000/pi);
}
//Compute Image rotation angle
L_VOID ComputeImageAngleToRef(L_INT nRefCx, L_INT nRefCy, L_INT nRefWidth, L_INT nRefHeight,
L_INT nImgCx, L_INT nImgCy, L_INT nImgWidth, L_INT nImgHeight,
L_INT nBarAngle, L_INT * pnImgAngle)
{
L_INT nRefAngle, nImgAngle, nDif;
L_DOUBLE pi = 3.1415926535;

if(nBarAngle > 9000)
nBarAngle -= 18000;

nRefAngle = (L_INT)(18000*atan2((nRefCy - nRefHeight/2.0),(nRefCx - nRefWidth/2.0))/pi);
nImgAngle = (L_INT)(18000*atan2((nImgCy - nImgHeight/2.0),(nImgCx - nImgWidth/2.0))/pi);
nDif = abs(nRefAngle - nImgAngle);
if(nDif > 18000)
nDif = 36000-nDif;
if( nDif > 9000)
*pnImgAngle = nBarAngle + 18000;
else
*pnImgAngle = nBarAngle;
}
// Read the barcode, compute the skew angle and correct the image
L_INT CorrectImageAngle(pBITMAPHANDLE pLeadBitmap)
{
BARCODE1D bar1D;
pBARCODEDATA barData;
L_INT nRet, nStartX, nStartY, nWidth, nHeight, nBarAngle, nImageAngle, nCx, nCy;
POINT p1, p2, p3, p4;
//Reference Image Properties
L_INT nRefCx = 151, nRefCy=99, RefWidth=1908, RefHeight=2471;
ZeroMemory(&bar1D, sizeof(BARCODE1D));
bar1D.uStructSize = sizeof(BARCODE1D);
bar1D.bErrorCheck = TRUE;
bar1D.nGranularity = 9;
bar1D.nMinLength = 4;
bar1D.nDirection = BARCODE_DIR_HORIZONTAL|BARCODE_DIR_VERTICAL;
//Call the barcode read function to detect the barcode, note that we used
//BARCODE_RETURN_FOUR_POINTS to get the exact barcode corners
nRet = L_BarCodeRead(pLeadBitmap, NULL, BARCODE_1D_READ_ANYTYPE,
BARCODE_SCANLINES_PER_PIXELS, BARCODE_RETURN_FOUR_POINTS,
1, &bar1D, NULL, NULL, &barData, sizeof(BARCODEDATA));
if(nRet != SUCCESS)
return nRet;
//extract the four corner points
nStartX = barData[0].rcBarLocation.left;
nStartY = barData[0].rcBarLocation.top;
nWidth = barData[0].rcBarLocation.right - nStartX;
nHeight = barData[0].rcBarLocation.bottom - nStartY;
p1.x = (nStartX & 0xffff);
p1.y = (nStartX >> 16);
p2.x = (nStartY & 0xffff);
p2.y = (nStartY >> 16);
p3.x = (nWidth & 0xffff);
p3.y = (nWidth >> 16);
p4.x = (nHeight & 0xffff);
p4.y = (nHeight >> 16);
//Find the barcode center
ComputeBarcodeCenter(&p1, &p2, &p3, &p4, &nCx, &nCy);
//Find the barcode angle
ComputeBarcodeAngle(&p1, &p2, &p3, &p4, &nBarAngle);
//Calculte Image skew angle
ComputeImageAngleToRef(nRefCx, nRefCy, RefWidth, RefHeight,
nCx, nCy, pLeadBitmap->Width, pLeadBitmap->Height,
nBarAngle, &nImageAngle);
//Free barcode data buffer
L_BarCodeFree(&barData);
//rotate the image in the oppiste direction of the skew angle to fix it
return L_RotateBitmap(pLeadBitmap, -nImageAngle, 0, RGB(255,255,255));
}


 

LEADTOOLS Code Tip-011

½ºÄµÇÑ ¹®¼­¸¦ ¹®ÀÚÀνÄ(Áï OCR)ÇÑ ÈÄ À̸¦ PDF·Î ÀúÀåÇÏ´Â ÇÁ·Î±×·¥



¾Æ·¡ÀÇ ¼ÀÇà ÄÚµå´Â 2005 ÄÄÆÄÀÏ·¯·Î VB.NET ȯ°æ¿¡¼­ ÀÛ¼ºµÈ °Í ÀÔ´Ï´Ù. ÀÌ ÄÚµå´Â ¹®¼­¸¦ ½ºÄµÇÏ´Â ¹æ¹ý ±×¸®°í ±× ½ºÄµÇÑ ¹®¼­¸¦ °Ë»ö°¡´ÉÇÑ PDF·Î º¯È¯ÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù. ÀÌ ÇÁ·Î±×·¥ Ç÷οì´Â ù¹ø°, ½ºÄ³³Ê·Î ºÎÅÍ ¹®¼­¸¦ Àд °úÁ¤ µÎ¹ø°, ½ºÄµÇÑ ¹®¼­ÀÇ °¢ ÆäÀÌÁö¸¶´Ù ³ëÀÌÁî Á¦°Å(Clean-Up)ÇÏ´Â °úÁ¤ ³¡À¸·Î, À̸¦ °Ë»ö°¡´ÉÇÑ PDF·Î Ãâ·ÂÇϱâ À§ÇØ ÀúÀåÇÏ´Â °úÁ¤ÀÔ´Ï´Ù.

¿ì¼± »ç¿ëÇÏ´Â ¸ðµç º¯¼öµéÀ» ¼±¾ðÇÏ°í, ±× ´ÙÀ½¿¡ Form1_Load ³»¿¡¼­ °´Ã¼µéÀ» »ý¼º ¹× ÃʱâÈ­ÇÕ´Ï´Ù. À̶§ »ç¿ëÀÚ´Â Ãâ·Â µð·ºÅ丮(_miOutputDir_Click) ¸¦ ¼±ÅÃÇÒ ¼ö ÀÖÀ¸¸ç, ¼±ÅÃµÈ Ãâ·Â µð·ºÅ丮°¡ ¾ø´Â °æ¿ì ÇÁ·Î±×·¥Àº C:\ ·Î ÃʱâÈ­µË´Ï´Ù. »ç¿ëÀÚ´Â ¶ÇÇÑ ¹®¼­¸¦ ½ºÄµÇÒ µð¹ÙÀ̽º¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù(_miSelectScanner_Click). ÀÌ·± ¼±ÅõéÀÌ ÀÌ·ç¾îÁö¸é, »ç¿ëÀÚ´Â ½ºÄ³´× ÇÁ·Î¼¼½º¸¦ ÃʱâÈ­ÇÕ´Ï´Ù. '_miScan_Click' À̺¥Æ®¿¡¼­, ¿ì¼± OCR¿¡ ÀÇÇØ »ý¼ºµÈ ÀÌÀüÀÇ ÀÓÀÇ ¸ÞŸÆÄÀϵéÀ» »èÁ¦ÇÕ´Ï´Ù. ¶ÇÇÑ, OCR¿¡ Ãß°¡µÈ ÀÌÀüÀÇ ÀÓÀÇ ÆäÀÌÁöµéÀ» Á¦°ÅÇÕ´Ï´Ù. ´ÙÀ½À¸·Î, ½ºÄ³³ÊÇÑÅ× ¹®¼­¸¦ ½ºÄµ ½ÃÀÛÇÔÀ» ¾Ë·ÁÁÝ´Ï´Ù. ´ÜÁö ÆĶó¸ÞŸ·Î¼­ TwainUserInterfaceFlags.Show ¸¦ ÆнÌÇÔÀ¸·Î¼­, ¿ì¸® Åøµé¿¡°Ô Twain µå¶óÀ̺êÀÇ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º º¸±â¸¦ Å뺸ÇÕ´Ï´Ù. °³¹ßÀÚ´Â ¶ÇÇÑ Twain µå¶óÀ̺êÀÇ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¦ º¸¿©ÁÖÁö ¾Êµµ·Ï TwainUserInterfaceFlags.None À» ÆнºÇÒ ¼ö ÀÖ½À´Ï´Ù. °³¹ßÀÚ´Â »ç¿ëÀÚ°¡ ½ºÄ³³Ê ¼³Á¤µéÀ» Á¶Á¤ÇÒ ¼ö ¾øµµ·Ï Çϰųª ¶Ç´Â °³¹ßÀÚ °íÀ¯ÀÇ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¦ º¸¿©ÁÖµµ·Ï ¼±ÅÃÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. 'twain.Acquire'°¡ ÄݵǸé, ½ºÄ³³Ê´Â ±× ÀÚüÀÇ ÀÎÅÍÆäÀ̽º¸¦ º¸¿©ÁÖ°í, »ç¿ëÀÚ°¡ ±× ÀÚ½ÅÀÇ ¼±ÅÃÀ» Çϸé, ÀÌÁ¦ ½ºÄ³´× ÇÁ·Î¼¼½º°¡ ½ÃÀ۵˴ϴÙ. ½ºÄ³³Ê¿¡ ÀÇÇØ ½ºÄµµÈ °¢ ÆäÀÌÁöµé¿¡ ´ëÇØ 'twain_AcquirePage' À̺¥Æ®°¡ ÄÝµÉ °Í ÀÔ´Ï´Ù. ÀÌ À̺¥Æ®¿¡¼­, ½ºÄµµÈ °¢ ÆäÀÌÁöµéÀ» Ŭ¸°ÇÑ ´ÙÀ½ OCR °´Ã¼(¹®¼­)¿¡ ±× ÆäÀÌÁöµéÀ» Ãß°¡ÇÕ´Ï´Ù. ¸ðµç ÆäÀÌÁöµéÀÌ ½ºÄµµÇ¸é, 'twain.Acquire' ÇÔ¼ö°¡ ¸®Å쵃 °Í ÀÔ´Ï´Ù. ÀÌÁ¦, ¸ðµç ÆäÀÌÁöµé(document.Recognize)À» ¹®ÀÚ ÀνÄ(Áï, OCR)ÇÏ°í ±× °á°úµéÀ» °Ë»ö°¡´ÉÇÑ PDF·Î ÀúÀåÇÕ´Ï´Ù.(document.SaveResultsToFile).


Imports Leadtools
Imports Leadtools.Document
Imports Leadtools.Twain
Imports Leadtools.WinForms
Imports Leadtools.ImageProcessing.Core

Public Class Form1

Public m_strSavePath As String = "C:\"
Public WithEvents twain As TwainSession
Public document As RasterDocumentEngine

Dim deskew As New DeskewCommand
Dim despeckle As New DespeckleCommand
Dim dotRemove As New DotRemoveCommand
Dim holepunchRemove As New HolePunchRemoveCommand
Dim lineRemove As New LineRemoveCommand

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Unlock support for these features
RasterSupport.Unlock(RasterSupportType.Ocr, "")
RasterSupport.Unlock(RasterSupportType.Document, "")
RasterSupport.Unlock(RasterSupportType.OcrPdfOutput, "")

'Initialize OCR object
RasterDocumentEngine.EnginePath = "C:\Program Files\LEAD
Technologies\LEADTOOLS OCR Runtime 15\Bin\Common\OCR"
document = RasterDocumentEngine.Instance
document.Startup()
document.RecognitionDataFileName = Application.StartupPath + "\
DataFile.rdf"
Dim sro As Document.RasterDocumentResultOptions =
document.SaveResultOptions
sro.Format = RasterDocumentFormatType.Pdf
sro.FormatLevel = RasterDocumentFormatLevel.Full
document.SaveResultOptions = sro

'Initalize Twain object
twain = New TwainSession
twain.Startup(Me, "Manufacturer", "Product Family", "Version", "Application",
TwainStartupFlags.None)

'Initialize DotRemove
dotRemove.Flags =
DotRemoveCommandFlags.UseDiagonals Or
DotRemoveCommandFlags.UseSize
dotRemove.MaximumDotHeight = 8
dotRemove.MaximumDotWidth = 8
dotRemove.MinimumDotHeight = 2
dotRemove.MinimumDotWidth = 2

'Initialize HolePunchRemove
holepunchRemove.Flags = HolePunchRemoveCommandFlags.UseDpi Or
HolePunchRemoveCommandFlags.UseCount Or _
HolePunchRemoveCommandFlags.UseLocation
holepunchRemove.Location = HolePunchRemoveCommandLocation.Left

'Initialize LineRemove
lineRemove.MaximumLineWidth = 9
lineRemove.MinimumLineLength = 400
lineRemove.Wall = 15
lineRemove.MaximumWallPercent = 10
lineRemove.Variance = 3
lineRemove.GapLength = 3
End Sub

Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.FormClosingEventArgs) Handles
MyBase.FormClosing
'Free resources
document.Shutdown()
twain.Shutdown()
End Sub

Private Sub _miOutputDir_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles _miOutputDir.Click
Dim dlg As New System.Windows.Forms.FolderBrowserDialog
If (dlg.ShowDialog() = Windows.Forms.DialogResult.OK) Then
m_strSavePath = dlg.SelectedPath + "\"
End If
End Sub

Private Sub _miSelectScanner_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles _miSelectScanner.Click
twain.SelectSource(String.Empty)
End Sub

Private Sub _miScan_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles _miScan.Click
'Delete previous OCR meta file.
If (System.IO.File.Exists(document.RecognitionDataFileName)) Then
System.IO.File.Delete(document.RecognitionDataFileName)
End If

'Remove all previous pages
While document.PageCount > 0
document.RemovePage(0)
End While

'Scan images
twain.Acquire(TwainUserInterfaceFlags.Show)

'OCR all the images
document.Recognize(0, document.PageCount, Nothing)

'Save the results to PDF
document.SaveResultsToFile(m_strSavePath + "Results.pdf")
End Sub

Private Sub twain_AcquirePage(ByVal sender As Object, ByVal e As
Leadtools.Twain.TwainAcquirePageEventArgs) Handles twain.
AcquirePage
'Deskew
deskew.Run(e.Image)

'Despeckle
despeckle.Run(e.Image)

'Dot Remove
dotRemove.Run(e.Image)

'Hole Punch Remove
holepunchRemove.Run(e.Image)

'Vertical Line Remove
lineRemove.Type = LineRemoveCommandType.Vertical
lineRemove.Run(e.Image)

'Horizontal Line Remove
lineRemove.Type = LineRemoveCommandType.Horizontal
lineRemove.Run(e.Image)

'Add page to the OCR engine
document.AddPage(e.Image, 1)
End Sub
End Class


»ó±â ÇÁ·ÎÁ§Æ®¸¦ ´Ù¿î·ÎµåÇÏ·Á¸é ¿©±â¸¦ Ŭ¸¯¹Ù¶ø´Ï´Ù.

 

LEADTOOLS Code Tip-012

Expression Blend¸¦ »ç¿ëÇÑ Bitmap È¿°úµéÀÇ Ãß°¡

·£´õ¸µµÈ Microsoft Windows Presentation Foundation(WPF) ÄÁÅÙÃ÷¿¡ ½Ã°¢È¿°ú¸¦ Ãß°¡Çϱâ À§ÇØ Bitmap È¿°úµéÀ» »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦µé¾î, ±×¸²ÀÚ¸¦ °®´Â ¹öÆ°(DropShadowBitmapEffect) ¶Ç´Â Blur È¿°ú¸¦ °®´Â ºÎµå·¯¿î À̹ÌÁöµéÀ» »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. LEADTOOLS SpecialEffect µéÀ» »ç¿ëÇÑ ºñÆ®¸Ê È¿°ú¸¦ Ãß°¡Çϱâ À§ÇÑ Microsoft Expression Blend ³» ÇÁ·Î±×·¥À» »ý¼º/½ÇÇà Çϱâ À§ÇØ ´ÙÀ½°ú °°Àº °úÁ¤À¸·Î(ÀüüÀûÀÎ ÄÚµå/µ¥¸ð º¸±â) ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù.



LEADTOOLS Code Tip-013

Medical Image Viewer

¸ÞµðÄ® À̹ÌÁö ºä¾î ÄÁÆ®·ÑÀº Çϳª ¶Ç´Â ±× ÀÌ»óÀÇ ºäÀ× ¹× À̵é À̹ÌÁöµéÀÇ ½Ç½Ã°£ Á¶ÀÛÀ» Áö¿øÇÕ´Ï´Ù. ÀÌ ÄÁÆ®·ÑÀº ´ÜÁö ¸î¶óÀÎÀÇ Äڵ常À» »ç¿ëÇÔÀ¸·Î¼­ »ç¿ëÀÚ/°³¹ßÀÚ°¡ ½ÇÁ¦ÀÇ ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÒ ¼ö ÀÖµµ·Ï ÇØÁÖ¸ç, ¶ÇÇÑ À̹ÌÁöÀÇ Çâ»ó, ºÐ¼® ¹× ºñ±³¸¦ À§ÇØ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÄÁÆ®·ÑÀº ´ÜÀÏ ±×¸®°í º¹¼ö ÇÁ·¹ÀÓ ¸ÞµðÄ® À̹ÌÁöµéÀ» ¿Ïº®È÷ Áö¿øÇϸç, °³¹ßÀÚ°¡ ±×µé °íÀ¯ÀÇ ÄÁÆ®·ÑÀ» »ý¼º/ƯȭÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù. ÀÌ ÄÁÆ®·Ñ¿¡ ´ëÇÑ ÄÚµù ¼ÀÇÃÀº ¿©±â¸¦ Ŭ¸¯¹Ù¶ø´Ï´Ù.

LEADTOOLS Code Tip-014

°Ë»ö °¡´ÉÇÑ PDF/A

¾Æ·¡´Â LEADTOOLSÀÇ »õ·Î¿î/°³¼±µÈ ÇÏÀÌ ·¹º§ OCR ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÑ VB ¹× C#·Î ÀÛ¼ºµÈ ÇϳªÀÇ ÄÚµå ´ÜÆíÀÔ´Ï´Ù. ´ÜÁö 3 ¶óÀÎÀÇ Äڵ常À¸·Î, °³¹ßÀÚ´Â À̹ÌÁö¸¦ OCRÇÏ°í ±× ÀÎ½Ä °á°ú¸¦ º» ¿¹Á¦ µ¥¸ðÀÇ PDF/A¿Í °°Àº ÀÓÀÇ Áö¿øµÇ´Â Ãâ·Â Æ÷¸äµé·Î ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. ·Î¿ì ·¹º§ ÀÎÅÍÆäÀ̽ºµéÀº ¶ÇÇÑ ÀÎ½Ä ÇÁ·Î¼¼½º Àü¹Ý¿¡ °ÉÃÄ º¸´Ù ¹Ì¼¼ ÄÁÆ®·ÑÀ» ÇÊ¿ä·Î ÇÏ´Â °³¹ßÀÚµéÀ» À§ÇØ Á¦°øµË´Ï´Ù.


Visual Basic
' Create the engine instance
Using ocrEngine As IOcrEngine = _
OcrEngineManager.CreateEngine(OcrEngineType.Plus, False)
' Startup the engine
ocrEngine.Startup(Nothing, Nothing, Nothing)
' Convert the multi-page TIF image to a PDF document
ocrEngine.AutoRecognizeManager.Run( _
"C:\LEADTOOLS 16\Images\Ocr.tif", _
"C:\LEADTOOLS 16\Images\Document.pdf", _
Nothing, _
OcrDocumentFormat.PdfA, _
Nothing)
End Using

C#
// Create the engine instance
using(IOcrEngine ocrEngine =
OcrEngineManager.CreateEngine(OcrEngineType.Plus, false))
{
// Startup the engine
ocrEngine.Startup(null, null, null);
// Convert the multi-page TIF image to a PDF document
ocrEngine.AutoRecognizeManager.Run( @"C:\LEADTOOLS 16\Images\Ocr.tif",
@"C:\LEADTOOLS 16\Images\Document.pdf",
null,
OcrDocumentFormat.PdfA, null);
}

 

 
Copyright © 2010 by Hyubwoo. Info. Tech. Co., Ltd. All rights reserved.