- 使用 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;
}
此页面对您有帮助吗?