Я не могу восстановить исходное изображение из представления jSignature текста Base30 - PullRequest
2 голосов
/ 24 мая 2019

Я пытаюсь реализовать библиотеку jSignature в своем приложении, но не могу заставить ее работать, реальная проблема - попытка воссоздать исходное изображение из текста base30. Чтобы сделать это, я рисую что-то в их demo , беру текст base30 и вставляю его в мое приложение, но сгенерированное изображение не имеет ничего общего с оригинальным. Код моего примера приложения:

    private void BtnConvertToSVG_Click(object sender, EventArgs e)
    {
        convertFromBase30();
    }

    private void convertFromBase30()
    {
        try
        {
            jSignature.Tools.Base30Converter Base30 = new jSignature.Tools.Base30Converter();
            String base30Text = tbBase30Text.Text.ToString();
            int[][][] arrBase30 = Base30.Base30ToNative(base30Text);
            String strSVG = jSignature.Tools.SVGConverter.ToSVG(arrBase30);
            tbSVG.Text = strSVG;
            MemoryStream s = new MemoryStream(Encoding.ASCII.GetBytes(strSVG));
            SvgDocument mySVG = SvgDocument.Open<SvgDocument>(s, null);
            var tempStream = new System.IO.MemoryStream();
            mySVG.Draw().Save(tempStream, System.Drawing.Imaging.ImageFormat.Png);
            System.Drawing.Image img = System.Drawing.Image.FromStream(tempStream);
            pbImage.Image = img;
        }
        catch (Exception ex)
        {
            MessageBox.Show(String.Format("{0}", ex.Message));
        }
    }

Это приложение Windows Forms с двумя TextBox:

  • tbBase30Text: здесь я представляю текст base30
  • tbSVG: где приложение пишет код изображения SVG

Кнопка (btnConvertToSVG) и PictureBox, где я печатаю сгенерированное изображение. Он использует библиотеки , включенные в проект jSignature

Если я нарисую ТАКОЕ изображение в их демонстрации, это даст мне следующий результат Original signature

Вставка кода base30 в мое приложение дает мне следующий результат:

Result signature

Я не понимаю, почему, но единственная общая черта между обеими сигнатурами - это количество строк.

Есть несколько вилок этой библиотеки, brinley 's (последнее обновление) и willowsystems , которые я пробовал безуспешно.

1 Ответ

2 голосов
/ 28 мая 2019

Я наконец-то решил это благодаря еще одному ТАКому вопросу , в котором говорилось о той же проблеме.Ошибка была в библиотеке для преобразования в SVG, включенный в проект jSignature.

Все String.Format игнорируют Culture при преобразовании String, добавляя ошибки в конечный результат, вы можете исправить это, добавив CultureInfo.InvariantCulture ко всем из них в начале

String.Format(CultureInfo.InvariantCulture, ...)
...