Qadeer Ahmed Khan Ответов: 1

Преобразование строки в картинку


Привет, терминал кредитной карты возвращает строку для захваченной подписи, но я не могу преобразовать ее в изображение. Код, который я вставил, дает пустое изображение

Что я уже пробовал:

string signature = "0,65535^49,10^45,13^43,17^41,21^39,25^37,29^36,33^34,37^33,41^32,45^31,49^30,54^30,58^31,62^34,66^38,67^42,67^46,65^50,63^54,60^58,57^63,53^67,48^71,44^75,40^79,36^83,32^87,28^91,25^95,23^95,27^94,31^92,35^91,39^90,43^88,47^86,52^85,56^84,60^83,64^82,68^82,72^84,76^88,78^92,77^96,76^100,73^104,71^108,68^112,66^116,62^121,60^125,59^129,58^133,58^137,60^140,64^141,68^142,72^143,76^145,80^149,83^153,85^157,85^161,86^165,85^169,85^173,85^177,84^182,83^186,83^190,81^";

           char[] charArr = signature.ToCharArray();

           byte[] array = Encoding.GetEncoding("UTF-8").GetBytes(charArr);

           var im = ImageFromRawBgraArray(array, 1000, 1000);


 public System.Drawing.Image ImageFromRawBgraArray(byte[] arr, int width, int height)
       {
           var output = new System.Drawing.Bitmap(width, height);
           var rect = new System.Drawing.Rectangle(0, 0, width, height);
           var bmpData = output.LockBits(rect,
               System.Drawing.Imaging.ImageLockMode.ReadWrite, output.PixelFormat);
           var ptr = bmpData.Scan0;
           System.Runtime.InteropServices.Marshal.Copy(arr, 0, ptr, arr.Length);
           output.UnlockBits(bmpData);
           return output;
       }

1 Ответов

Рейтинг:
12

OriginalGriff

Во - первых, эта строка не является изображением, и преобразование ее в байты этому не помогает-вы преобразуете каждый символ в строке в байт, что на самом деле просто оставляет все эти значения неизменными, поскольку все они находятся в диапазоне от " 0 " до " 9 "плюс два других символа", "и"^".

Вам нужно вернуться туда, где вы получили информацию о том, что это за данные, и прочитать их снова: возможно, там есть изображение, но оно не находится в формате "готов к отображению" и потребует изрядной обработки, чтобы преобразовать его в формат, который вы можете использовать. Пока вы не знаете, в каком формате эти данные и как они кодируются, они бесполезны для вас (и, возможно, также зашифрованы, учитывая, что это информация о кредитной карте).


Qadeer Ahmed Khan

Поэтому я нашел это в документации.

Примечание:
Значение векторных координат, разделенных символом ^ в следующем формате: x1, y1^x2,y2^xN, yN^~
Если есть событие pen-up, то вы используете координату 0, 65535, чтобы сигнализировать о разрыве линии
^ - это разделитель координат, ~ - конечный разделитель, а запятая (,) - векторный разделитель

OriginalGriff

И вот ваш ответ: это не изображение, это набор векторных координат, которые вам нужно будет обработать и нарисовать на изображении, а не данные изображения сами по себе.