- 使用 IFRPage::DetectOrientation 方法偵測影像方向。
- 將傳回的 TextOrientation 物件傳遞給 FindPageSplitPosition 方法。
語法
C++
C#
Visual Basic .NET
參數
回傳值
範例
C# 程式碼
C# 程式碼
HRESULT FindPageSplitPosition(
IObjectsExtractionParams* ExtractionParams,
ITextOrientation* TextOrientation,
PageSplitDirectionEnum* SplitDirection,
int* StartSplitPosition,
int* EndSplitPosition
);
void FindPageSplitPosition(
IObjectsExtractionParams ExtractionParams,
ITextOrientation TextOrientation,
out PageSplitDirectionEnum SplitDirection,
out int StartSplitPosition,
out int EndSplitPosition
);
Sub FindPageSplitPosition( _
ExtractionParams As IObjectsExtractionParams, _
TextOrientation As TextOITextOrientationrientation, _
ByRef SplitDirection As PageSplitDirectionEnum, _
ByRef StartSplitPosition As Integer, _
ByRef EndSplitPosition As Integer _
)
C# 程式碼
private bool splitImage(FREngine.IFRPage page, FREngine.IFRDocument frDoc, FREngine.IPageProcessingParams ppp)
{
int splitStartPosition = 0;
int splitEndPosition = 0;
bool isVerticalSplit = true;
// 偵測文字方向
FREngine.ITextOrientation ori = page.DetectOrientation(null, ppp.ObjectsExtractionParams, ppp.RecognizerParams);
// 找出分割位置
FREngine.PageSplitDirectionEnum pageSplitDirection;
page.FindPageSplitPosition(ppp.ObjectsExtractionParams, ori, out pageSplitDirection, out splitStartPosition, out splitEndPosition);
if (pageSplitDirection == FREngine.PageSplitDirectionEnum.PSD_NoSplit)
{
return false;
}
else if (pageSplitDirection == FREngine.PageSplitDirectionEnum.PSD_HorizontalSplit)
{
isVerticalSplit = false;
}
// 將影像分割成兩個頁面
// 影像尺寸
int width = page.ImageDocument.ColorImage.Width;
int height = page.ImageDocument.ColorImage.Height;
// 複製頁面
frDoc.AddPage(page);
FREngine.IFRPage secondPage = frDoc.Pages[frDoc.Pages.Count - 1];
// 裁切第一頁和第二頁
FREngine.IImageModification firstModification = engine.CreateImageModification();
FREngine.IRegion firstClipRegion = engine.CreateRegion();
FREngine.IImageModification secondModification = engine.CreateImageModification();
FREngine.IRegion secondClipRegion = engine.CreateRegion();
if (isVerticalSplit)
{
firstClipRegion.AddRect(0, 0, splitStartPosition, height - 1 );
secondClipRegion.AddRect(splitEndPosition, 0, width - 1, height - 1);
}
else
{
firstClipRegion.AddRect(0, 0, width - 1, splitStartPosition);
secondClipRegion.AddRect(0, splitEndPosition, width - 1, height - 1);
}
firstModification.AddClipRegion(firstClipRegion);
page.ImageDocument.Modify(firstModification);
secondModification.AddClipRegion(secondClipRegion);
secondPage.ImageDocument.Modify(secondModification);
return true;
}
這個頁面有幫助嗎?