Имя: Пароль:
1C
1C 7.7
v7: Картинка из BASE64
🠗 (Волшебник 28.03.2024 00:00)
,
0 kupec
 
27.03.24
11:47
Доброго дня. Получаю от WB через api ответ, в котором содержится строка в кодировке Base64. В ней закодирована картинка, а именно ШК заказа. Можно ли как то эту строку перегнать обратно в картинку? Пробую через БинарныеДанные, но что то не могу понять принцип действия, не получается ничего. Заранее спасибо
1 trdm
 
27.03.24
11:50
Подпишусь.
2 kupec
 
27.03.24
11:50
Написал вот такой код

    БинарныеДанные = СоздатьОбъект("BinaryData");
    FSO = CreateObject("Scripting.FileSystemObject");
    text=FSO.opentextfile("C:\1.txt",1,0,0);
    Строчка = Text.ReadLine();
    БинарныеДанные.ЗаписатьСтроку(Строчка,1);
    БинарныеДанные.СохранитьВФайл("C:\1.png");

В открываемом текстовом файле содержится строка, если я её просто копирую и вставляю в онлайн конвертер, то мне на выходе выдается правильная картинка. Может что то нужно добавить? Подскажите пожалуйста, знающие люди
3 timurhv
 
27.03.24
12:15
Удалите в начале текст вида:
"data:image/png;base64,"
4 timurhv
 
27.03.24
12:18
Код из 8-ки по получению двоичных данных:
Base64Значение(СтрЗаменить(СтрокаКартинки.Значение, "data:image/png;base64,", ""))

Base64Значение (Base64Value)
Получает из строки закодированной по алгоритму base64 двоичные данные.
5 kupec
 
27.03.24
12:24
(3) таких данных там нет
6 timurhv
 
27.03.24
12:38
(5) Тогда остается декодировать base64 в двоичные данные, по ссылке обсуждалось, возможно рабочий код (не проверял, с 7.7 не работаю)

https://helpf.pro/help/view/18047.html
7 kupec
 
27.03.24
12:45
Его тоже пробовал, не взлетело
8 vladmenleo
 
27.03.24
13:18
(7) Вот моя рабочая функция на основе ссылки в (5) Точно работает
Функция глДекодироватьФайл(СтрокаИсточник) Экспорт
    ЦДО = СоздатьОбъект("CDO.Message");
    ФСО = СоздатьОбъект("Scripting.FileSystemObject");
    Файл = КаталогВременныхФайлов() + ФСО.GetTempName() + ".pdf";
    Пустышка = КаталогВременныхФайлов() + ФСО.GetTempName();
    ЗначениеВФайл(Пустышка, "");
    Вложение = ЦДО.AddAttachment(Пустышка);
    Вложение.ContentTransferEncoding = "base64";
    Состояние("Декодировка данных");
    Стрим = Вложение.GetEncodedContentStream();
    Текст = СоздатьОбъект("Текст");
    Текст.ДобавитьСтроку(СтрокаИсточник);
    Текст.Записать(Файл);Текст="";
    Стрим.LoadFromFile(Файл);
    Стрим.Flush();
    Вложение.SaveToFile(Файл);
    ФС.УдалитьФайл(Пустышка);
    Возврат Файл;
КонецФункции
я сохраняю как пдф, ну а тебе надо будет png
9 kupec
 
27.03.24
13:24
Благодарю
10 kupec
 
27.03.24
19:12
а разрешите попросить еще обратную процедуру, файл в "base64"
11 kupec
 
27.03.24
23:00
Не актуально, нашел в соседних ветках
12 trdm
 
28.03.24
10:29
(11) Ссылку хоть дай.
13 kupec
 
28.03.24
12:57