Я использую Digital Persona SDK для сканирования отпечатков пальцев в формате wsq, для этого мне нужно изображение 512 x 512, SDK экспортирует только 357 x 392 изображения.
SDK предоставляет метод для сжатия захваченного изображения с устройства в формате wsq и возврата байтового массива, который я могу записать на диск.
- Я попытался выделить буфер 262144 для изображения 512 x 512.
-Заполнить новый буфер белыми пиксельными данными каждый байт до значения 255.
-Скопируйте исходный буфер изображения в новый буфер изображения. Исходное изображение не нужно центрировать, но важно обязательно копировать, не повреждая данные изображения.
Подводя итог, я попытался скопировать старое изображение в верхний правый угол нового изображения.
DPUruNet.Compression.Start();
DPUruNet.Compression.SetWsqBitrate(95, 0);
Fid capturedImage = captureResult.Data;
//Fill the new buffer with white pixel data each byte to value 255.
byte[] bytesWSQ512 = new byte[262144];
for (int i = 0; i < bytesWSQ512.Length; i++)
{
bytesWSQ512[i] = 255;
}
//Compress capturedImage and get bytes (357 x 392)
byte[] bytesWSQ = DPUruNet.Compression.CompressRaw(capturedImage.Views[0].Width, capturedImage.Views[0].Height, 500, 8, capturedImage.Views[0].RawImage, CompressionAlgorithm.COMPRESSION_WSQ_NIST);
//Copy the original image buffer into the new image buffer
for (int i = 0; i < capturedImage.Views[0].Height; i++)
{
for (int j = 0; j < capturedImage.Views[0].Width; j++)
{
bytesWSQ512[i * bytesWSQ512.Length + j ] = bytesWSQ[i * capturedImage.Views[0].Width + j];
}
}
//Write bytes to disk
File.WriteAllBytes(@"C:\Users\Admin\Desktop\bytesWSQ512.wsq", bytesWSQ512);
DPUruNet.Compression.Finish();
При выполнении этого фрагмента я получаю IndexOutOfRangeException, я не знаю, правильный ли цикл или вычисление индексов для нового массива.
Вот представление о том, что я пытаюсь сделать.