Могу ли я использовать VBScript для кодирования gif на основе base64?

#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. Ах, это работает, я не видел этой ссылки на странице. Спасибо, Томалак.