преобразование картинки в JSON

 

Есть скриншот в PNG

Как его преобразовать в JSON ? 

Есть подозрение что с помощью библы https://www.mql5.com/ru/code/8098

Или как то по другому ? 

Base64
Base64
  • www.mql5.com
Просмотров: 3978 Рейтинг: Опубликован: 2006.02.20 23:28 Обновлен: 2016.11.22 07:33 Кодировка Base64 была разработана для того, чтобы бинарные данные можно было передавать по транспортным слоям, которые не являются чисто 8-битными, таким как тело mail-сообщения. Закодированные данные занимают примерно на 33% больше пространства, чем оригинальные...
 
Dmitiry Ananiev:

Как его преобразовать в JSON ? 

json это текстовый формат, что Вы ему положите вообще не принципиально

отправляйте сам файл в виде имя файла и сами бинарные данные

{ "FileName": "picture01.png" , "binary": ["137","80","78","13".....] }

ну максимум контрольную сумму или хеш в конце добавьте, чтобы проверить целостность

 
Igor Makanu:

json это текстовый формат, что Вы ему положите вообще не принципиально

отправляйте сам файл в виде имя файла и сами бинарные данные

ну максимум контрольную сумму или хеш в конце добавьте, чтобы проверить целостность

Так-то, обычно, в base64 бинарник перегоняют и шлют:

{"pic":"<base64>"}

 
Vladimir Simakov:

Так-то, обычно, в base64 бинарник перегоняют и шлют:

{"pic":"<base64>"}

никогда не занимался веб

ну значит и выяснили, по ссылке ТС Ваш комментарий как конвертировать в base64 средствами MQL виден


upd: гуглом convert png to json выбрал первый попавшийся онлайн-конвертер, там можно формат подсмотреть

{"@attributes":{"width":"200","height":"200"},"image":{"@attributes":{"id":"image0","width":"200","height":"200","x":"0","y":"0","xlink:href":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAY
 
Так весь вопрос как получить эти бинарные данные из картинки с помощью MQL4 
 
Dmitiry Ananiev:
Так весь вопрос как получить эти бинарные данные из картинки с помощью MQL4 

https://www.mql5.com/ru/forum/25229#comment_12965143

 
Dmitiry Ananiev:
Так весь вопрос как получить эти бинарные данные из картинки с помощью MQL4 

бинарные данные - это картинка, это уже есть, а вам нужен текст ASCII.

 
Taras Slobodyanik:

бинарные данные - это картинка, это уже есть, а вам нужен текст ASCII.

Хорошо. Получается вот так: 

 uchar  x[];
      int fh = FileOpen(_Symbol+Period()+".gif",FILE_BIN|FILE_READ);
      FileReadArray(fh,x,0,WHOLE_ARRAY);
      FileClose(fh);
      Print (ArraySize(x));//13600
      string sx ="";
      
      
      //Этот код выдает то же самое что и следующя строка
      
      //int i = 0;
      //while (true)
      //{  
      //   if (i>=ArraySize(x)) 
      //   break;
      //   sx+=CharToString(x[i]);
      //   i++;
      //}
      
      sx = CharArrayToString(x,0,ArraySize(x),CP_ACP);
      
      Print(sx);R0lGODlhWAKQAfcA


      string y = "";
      y = EncodeBase64(sx);
      Print (StringLen(y),"   ", y);// 16   R0lGODlhWAKQAfcA

Почему строка получается всего 16 символов ? 

 
Dmitiry Ananiev:

Хорошо. Получается вот так: 

Почему строка получается всего 16 символов ? 

А потому, что это строка, а строка заканчивается '/0' и пофиг run-time-у, что дальше в массиве 100500 байт))) Я же говорю - курите доки)))
 
Vladimir Simakov:
А потому, что это строка, а строка заканчивается '/0' и пофиг run-time-у, что дальше в массиве 100500 байт))) Я же говорю - курите доки)))

а можно как то на примере или подскажите как исправить ? 

 
Dmitiry Ananiev:

а можно как то на примере или подскажите как исправить ? 

А в чем проблема массив байт из картинки в кодировку BASE64 перевести?

void OnStart(){
   uchar key[];
   uchar result[];
   
   //input
   uchar data[] = {11, 12, 00, 12, 13};
   ArrayPrint(data);                                    //11, 12, 00, 12, 13
   
   //encoded
   CryptEncode(CRYPT_BASE64, data, key, result);
   printf("%s", CharArrayToString(result));             //CwwADA0=   - ПОЗДРАВЛЯЕМ, ЭТО ВАША ИСКОМАЯ СТРОКА В КОДИРОВКЕ BASE64
   
   //decoded
   CryptDecode(CRYPT_BASE64, result, key, result);
   ArrayPrint(result);                                  //11, 12, 00, 12, 13
}