|
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
|
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший