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