#image #vbscript #base64
Вопрос:
То, что я пытаюсь сделать, — это закодировать файл gif, чтобы включить его в XML-документ. Это то, что у меня есть сейчас, но, похоже, это не работает.
Function gifToBase64(strGifFilename)
On Error Resume Next
Dim strBase64
Set inputStream = WScript.CreateObject("ADODB.Stream")
inputStream.LoadFromFile strGifFilename
strBase64 = inputStream.Text
Set inputStream = Nothing
gifToBase64 = strBase64
End Function
Ответ №1:
Недавно я написал пост на эту тему для реализаций в JScript и VBScript. Вот решение, которое у меня есть для VBScript:
Public Function convertImageToBase64(filePath)
Dim inputStream
Set inputStream = CreateObject("ADODB.Stream")
inputStream.Open
inputStream.Type = 1 ' adTypeBinary
inputStream.LoadFromFile filePath
Dim bytes: bytes = inputStream.Read
Dim dom: Set dom = CreateObject("Microsoft.XMLDOM")
Dim elem: Set elem = dom.createElement("tmp")
elem.dataType = "bin.base64"
elem.nodeTypedValue = bytes
convertImageToBase64 = "data:image/png;base64," amp; Replace(elem.text, vbLf, "")
End Function
Комментарии:
1. Потрясающе… Я долго искал эту функцию… 🙂
Ответ №2:
В своем комментарии к Tomalak вы заявляете, что не хотите использовать внешние библиотеки DLL, но в своем примере вы пытаетесь использовать ADODB. Поэтому я подозреваю, что вы имеете в виду, что вы не хотите устанавливать библиотеки DLL, которые изначально не присутствуют на платформе Windows vanilia.
Если это так, то MSXML может быть вашим ответом:-
Function Base64Encode(rabyt)
Dim dom: Set dom = CreateObject("MSXML2.DOMDocument.3.0")
Dim elem: Set elem = dom.appendChild(dom.createElement("root"))
elem.dataType = "bin.base64"
elem.nodeTypedValue = rabyt
Base64Encode = elem.Text
End Function
Ответ №3:
Посмотрите здесь: Base64 Кодирует и декодирует файлы с помощью VBScript. Этот пример основан на бесплатном компоненте XBase64 и просто предоставляет оболочку для обработки файлов.
Вы также можете использовать чистую реализацию VBScript, но здесь вам придется самостоятельно позаботиться об обработке файлов. Это не должно быть слишком сложно, но производительность кодирования будет не такой хорошей. Однако для нескольких небольших файлов изображений этого будет достаточно.
Google будет появляться все чаще.
Комментарии:
1. Они выглядят хорошо, но я не могу использовать ни то, ни другое из-за зависимости от внешних библиотек DLL. То, что я ищу, — это сделать все это в vbscript. Реализация чистого VBScript основана на ScptUtl.dll.
2. Ах, это работает, я не видел этой ссылки на странице. Спасибо, Томалак.