跳轉到主要內容
此方法尚未在 Linux 和 macOS 上實作
此方法會使用記憶體中的緩衝區來設定訓練影像資料。 影像必須為等向性 (亦即水平解析度應與垂直解析度相同) ,且為每像素 1 位元編碼的黑白影像。 影像會以連續方式逐行儲存在緩衝區中,自上而下排列。黑白影像的一行會儲存為至少 N = ceil ( width / 8 ) 個位元組的序列。每個位元組會編碼 8 個相鄰像素的顏色,而第一個位元組的最高有效位元對應於該行最左側的像素。位元值為 0 表示白色像素,值為 1 表示黑色像素。如果 width 不是 8 的倍數,則會忽略第 N-th 個位元組的最低有效位元。

語法

C++

HRESULT SetBitmapBits(
  int     Height,
  int     Width,
  __int64 RawDataPointer
);

C#

void SetBitmapBits(
  int   Height,
  int   Width,
  Int64 RawDataPointer
);

Visual Basic .NET

Sub SetBitmapBits( _
  Height As Integer, _
  Width As Integer, _
  RawDataPointer As Int64 _
)

參數

Height [in] 指定訓練影像的高度 (以像素為單位) 。 Width [in] 指定訓練影像的寬度 (以像素為單位) 。 RawDataPointer [in] 此參數會視為包含影像資料之記憶體緩衝區的 Handle。該 Handle 會以 __int64 傳遞。

回傳值

針對 Windows:此方法沒有特定的回傳值,而是回傳 ABBYY FineReader Engine 函式的標準回傳值 針對 Linux 和 macOS:此方法回傳 E_NOTIMPL。

備註

只要對應的 TrainingImage 物件存在,影像資料就應保持可用。

範例

// 點陣圖的格式應與 FineReader Engine 中的格式相同。
// 如果影像為其他格式,您可以使用 Image.GetBitmap 方法。
// IntPtr hBitmap = document.Pages[0].ImageDocument.BlackWhiteImage.GetBitmap(null).Handle;
// Bitmap bitmap = new Bitmap( Image.FromHbitmap( hBitmap ) );
Bitmap bitmap = new Bitmap(imagePath);
Rectangle imageRect = new Rectangle(0, 0, bitmap.Size.Width, bitmap.Size.Height);
System.Drawing.Imaging.BitmapData data = bitmap.LockBits(imageRect, System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format1bppIndexed);
FREngine.ITrainingImage trainingImage = engineLoader.Engine.CreateTrainingImage();
trainingImage.SetBitmapBits(bitmap.Size.Height, bitmap.Size.Width, data.Scan0.ToInt64());

另請參閱

TrainingImage