Как передать изображение в JSON через Base64 в 1С 7.7?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как передать изображение в JSON через Base64 в 1С 7.7?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #35604
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        передать в JSON изображение 1с 7.7 через преобразование его в бинарную строку

      • #35605
        bot_avaOdin — Одинэсник
        Участник

          Сергей, в 1С 7.7 для передачи изображения в JSON через бинарную строку нужно выполнить следующие шаги:

          1. Получить бинарные данные изображения (например, из объекта «Изображение»).
          2. Преобразовать бинарные данные в строку, используя Base64 кодирование.
          3. Вставить полученную Base64 строку в JSON как обычное строковое значение.

          В 1С 7.7 нет встроенных функций для Base64, поэтому нужно использовать самописные процедуры или внешние библиотеки. Вот пример реализации Base64 кодирования и формирования JSON с изображением:

          // Функция кодирования бинарных данных в Base64
          Функция Base64Кодировать(ДвоичныеДанные)
              ТаблицаКодов = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
              Результат = "";
              Буфер = "";
              Длина = СтрДлина(ДвоичныеДанные);
              Индекс = 1;
              Пока Индекс <= Длина Цикл
                  // Читаем по 3 байта
                  Байты = "";
                  Для i = 0 По 2 Цикл
                      Если (Индекс + i) <= Длина Тогда
                          Байты = Байты + Сред(ДвоичныеДанные, Индекс + i, 1);
                      Иначе
                          Байты = Байты + Символ(0);
                      КонецЕсли;
                  КонецЦикла;
          
                  // Преобразуем 3 байта в 4 символа Base64
                  Б1 = КодСимвола(Сред(Байты,1,1));
                  Б2 = КодСимвола(Сред(Байты,2,1));
                  Б3 = КодСимвола(Сред(Байты,3,1));
          
                  Инд1 = Б1 / 4;
                  Инд2 = ((Б1 % 4) * 16) + (Б2 / 16);
                  Инд3 = ((Б2 % 16) * 4) + (Б3 / 64);
                  Инд4 = Б3 % 64;
          
                  Результат = Результат + Сред(ТаблицаКодов, Цел(Инд1)+1, 1);
                  Результат = Результат + Сред(ТаблицаКодов, Цел(Инд2)+1, 1);
          
                  Если (Индекс + 1) > Длина Тогда
                      Результат = Результат + "=";
                  Иначе
                      Результат = Результат + Сред(ТаблицаКодов, Цел(Инд3)+1, 1);
                  КонецЕсли;
          
                  Если (Индекс + 2) > Длина Тогда
                      Результат = Результат + "=";
                  Иначе
                      Результат = Результат + Сред(ТаблицаКодов, Цел(Инд4)+1, 1);
                  КонецЕсли;
          
                  Индекс = Индекс + 3;
              КонецЦикла;
              Возврат Результат;
          КонецФункции
          
          // Пример использования
          Процедура ПередатьИзображениеВJSON(Изображение)
              // Получаем бинарные данные изображения
              БинарныеДанные = Изображение.ПолучитьДвоичныеДанные();
          
              // Кодируем в Base64
              СтрокаBase64 = Base64Кодировать(БинарныеДанные);
          
              // Формируем JSON вручную
              JSON = "{""image"":""" + СтрокаBase64 + """}";
          
              Сообщить(JSON);
          КонецПроцедуры
          

          Объяснения:
          — Метод `ПолучитьДвоичныеДанные()` у объекта Изображение возвращает бинарные данные.
          — Функция `Base64Кодировать` преобразует бинарные данные в строку Base64.
          — В JSON строка Base64 вставляется как обычное строковое значение.

          Если у вас есть возможность использовать внешние компоненты или расширения, можно применить готовые библиотеки Base64, что упростит код.

          Если нужна помощь с конкретным кодом для вашего варианта — могу помочь написать.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С