|
Помогите.Byte[] to bitmap - invalid parameter
|
|||
---|---|---|---|
#18+
Никак не могу совладать с этой ошибкой. Перерыл весь стековерфло, попробовал нескоько вариантов, не помогает. Последний вариант byte[2048] RegTmp; var ms1 = new MemoryStream(RegTmp); ms1.Seek(0, SeekOrigin.Begin); var bmp1 = Image.FromStream(ms1); <-- ошибка возникает здесь Не подскажете - что делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2017, 00:15 |
|
Помогите.Byte[] to bitmap - invalid parameter
|
|||
---|---|---|---|
#18+
bssoft2b, сначала надо в ms1 что нибудь положить. нет там кролика ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2017, 00:34 |
|
Помогите.Byte[] to bitmap - invalid parameter
|
|||
---|---|---|---|
#18+
Siemarglbssoft2b, сначала надо в ms1 что нибудь положить. нет там кролика Уверяю - RegTmp - полный, я просто не весь код привел. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2017, 00:44 |
|
Помогите.Byte[] to bitmap - invalid parameter
|
|||
---|---|---|---|
#18+
bssoft2b, так приводи. под теги кода src и спойлера если много. и текст ошибки. телепатов мало ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2017, 00:59 |
|
Помогите.Byte[] to bitmap - invalid parameter
|
|||
---|---|---|---|
#18+
Siemarglbssoft2b, так приводи. под теги кода src и спойлера если много. и текст ошибки. телепатов мало Наслаждайтесь , место ошибки(Parameter is not valid) выделено красным: using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Runtime.InteropServices; using System.Threading; using System.Windows.Forms; using FingerPrintRec.FingerPrintService; using libzkfpcsharp; using Sample; namespace Demo { public partial class Form1 : Form { private const int REGISTER_FINGER_COUNT = 3; private const int MESSAGE_CAPTURED_OK = 0x0400 + 6; private readonly byte[] CapTmp = new byte[2048]; private readonly zkfp fpInstance = new zkfp(); private readonly byte[] RegTmp = new byte[2048]; private readonly byte[][] RegTmps = new byte[3][]; private bool bIdentify = true; private bool bIsTimeToDie; private int cbCapTmp = 2048; private int cbRegTmp; private IntPtr FormHandle = IntPtr.Zero; private byte[] FPBuffer; private int iFid = 1; private bool IsRegister; private int RegisterCount; public Form1() { InitializeComponent(); InitDevice(); OpenDevice(); } [DllImport("user32.dll", EntryPoint = "SendMessageA")] public static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam); public void InitDevice() { var ret = zkfp.ZKFP_ERR_OK; if ((ret = fpInstance.Initialize()) == zkfp.ZKFP_ERR_OK) { var nCount = fpInstance.GetDeviceCount(); if (nCount > 0) { } else { fpInstance.Finalize(); MessageBox.Show("Устройство не присоединено!"); } } else { MessageBox.Show("Ошибка инициализации, код==" + ret + " !"); } } private void Finalize() { fpInstance.Finalize(); cbRegTmp = 0; } public void OpenDevice() { var ret = zkfp.ZKFP_ERR_OK; if (zkfp.ZKFP_ERR_OK != (ret = fpInstance.OpenDevice(0))) { MessageBox.Show("Устройство не открылось, код = " + ret); return; } RegisterCount = 0; cbRegTmp = 0; iFid = 1; for (var i = 0; i < 3; i++) RegTmps[i] = new byte[2048]; FPBuffer = new byte[fpInstance.imageWidth * fpInstance.imageHeight]; var captureThread = new Thread(DoCapture); captureThread.IsBackground = true; captureThread.Start(); bIsTimeToDie = false; textRes.Text = "Устройство открылось, с/н=" + fpInstance.devSn; } private void DoCapture() { while (!bIsTimeToDie) { cbCapTmp = 2048; var ret = fpInstance.AcquireFingerprint(FPBuffer, CapTmp, ref cbCapTmp); if (ret == zkfp.ZKFP_ERR_OK) SendMessage(FormHandle, MESSAGE_CAPTURED_OK, IntPtr.Zero, IntPtr.Zero); Thread.Sleep(200); } } protected override void DefWndProc(ref Message m) { switch (m.Msg) { case MESSAGE_CAPTURED_OK: { var ms = new MemoryStream(); BitmapFormat.GetBitmap(FPBuffer, fpInstance.imageWidth, fpInstance.imageHeight, ref ms); var bmp = new Bitmap(ms); picFPImg.Image = bmp; if (IsRegister) { var ret = zkfp.ZKFP_ERR_OK; int fid = 0, score = 0; ret = fpInstance.Identify(CapTmp, ref fid, ref score); if (zkfp.ZKFP_ERR_OK == ret) { textRes.Text = "Этот отпечаток уже зарегистрирован в системе id=" + fid + "!"; return; } if (RegisterCount > 0 && fpInstance.Match(CapTmp, RegTmps[RegisterCount - 1]) <= 0) { textRes.Text = "Приложите один и тот же палец 3 раза для формирования отпечатка"; return; } Array.Copy(CapTmp, RegTmps[RegisterCount], cbCapTmp); RegisterCount++; if (RegisterCount >= REGISTER_FINGER_COUNT) { RegisterCount = 0; if (zkfp.ZKFP_ERR_OK == (ret = fpInstance.GenerateRegTemplate(RegTmps[0], RegTmps[1], RegTmps[2], RegTmp, ref cbRegTmp)) && zkfp.ZKFP_ERR_OK == (ret = fpInstance.AddRegTemplate(iFid, RegTmp))) { iFid++; textRes.Text = "Регистрация отпечатка успешно завершена"; //отправим отпечаток на сервер ms = new MemoryStream(RegTmp); System.Drawing.Image image = Image.FromStream(ms); using (var svc = new FingerPrintServiceClient()) { //svc.CreateFeature(bmp1,txtTabNum.Text); } } else { textRes.Text = "Регистрация отпечатка неуспешна, код ошибки=" + ret; } IsRegister = false; } else { textRes.Text = "Вы должны приложить палец в " + (REGISTER_FINGER_COUNT - RegisterCount) + " раз"; } } else { if (cbRegTmp <= 0) { textRes.Text = "Сперва зарегистрируйте отпечатки!"; return; } if (bIdentify) { var ret = zkfp.ZKFP_ERR_OK; int fid = 0, score = 0; ret = fpInstance.Identify(CapTmp, ref fid, ref score); if (zkfp.ZKFP_ERR_OK == ret) textRes.Text = "Идентификация успешна, fid= " + fid + ", результат=" + score + "!"; else textRes.Text = "Идентификация неуспешна, ret= " + ret; } else { var ret = fpInstance.Match(CapTmp, RegTmp); if (0 < ret) textRes.Text = "Отпечаток найден, score=" + ret + "!"; else textRes.Text = "Отпечаток не найден, ret= " + ret; } } } break; default: base.DefWndProc(ref m); break; } } private void Form1_Load(object sender, EventArgs e) { FormHandle = Handle; } private void CloseDevice() { bIsTimeToDie = true; RegisterCount = 0; Thread.Sleep(1000); fpInstance.CloseDevice(); } private void Enroll() { if (!IsRegister) { IsRegister = true; RegisterCount = 0; cbRegTmp = 0; textRes.Text = "Прижмите палец 3 раза для формирования отпечатка!"; } } private void Identify() { if (!bIdentify) { bIdentify = true; textRes.Text = "Прижмите палец!"; } } private void Verify() { if (bIdentify) { bIdentify = false; textRes.Text = "Прижмите палец!"; } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { CloseDevice(); Finalize(); } private void btnEnroll_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtTabNum.Text)) { textRes.Text = "Заполните табельный номер"; return; } Enroll(); } private void btnIdentify_Click(object sender, EventArgs e) { var files = Directory.GetFiles(@"D:\project\fortcross\FingerPrintRec\FingerImages"); var i = 1; foreach (var file in files) { var img = Image.FromFile(file); using (var ms = new MemoryStream()) { img.Save(ms, ImageFormat.Jpeg); var imgArray = ms.ToArray(); Array.Copy(imgArray, RegTmp, cbCapTmp); } var ret = fpInstance.AddRegTemplate(i, RegTmp); } } } } ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2017, 01:26 |
|
Помогите.Byte[] to bitmap - invalid parameter
|
|||
---|---|---|---|
#18+
>bssoft2b, сегодня, 00:15 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1263383&msg=20572477] [20572477] >Не подскажете - что делать? Посмотри здесь . С уважением, Владимир ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2017, 09:36 |
|
Помогите.Byte[] to bitmap - invalid parameter
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2017, 10:05 |
|
Помогите.Byte[] to bitmap - invalid parameter
|
|||
---|---|---|---|
#18+
bssoft2b, ошибка означает неверный формат данных изображения в буфере. кстати, на c# структура приложение другая, нежели на С - defwindowproc переопределять не нужно - есть готовые события и их обработчики вызов Код: c# 1. 2. 3. 4.
выглядит подозрительным - два раза подряд RegTmp параметром ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2017, 10:23 |
|
|
start [/forum/topic.php?fid=20&fpage=42&tid=1399844]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 293ms |
total: | 437ms |
0 / 0 |