dcl1214 发表于 3 天前

如何将图片转换为base64便于发送到ocr服务器识别图片文字

本帖最后由 dcl1214 于 2025-12-9 08:54 编辑

很多ocr服务器接受图片的时候需要base64的数据,例如: Umi-ocr ,如何将图片转换为base64呢,请看下文

(defun $tu-pian-base64$(imagePath / adoStream xmlDoc node result)
;调用示例:(setq base64-data ($tu-pian-base64$ "C:/123.png"))
(setqadoStream (vl-catch-all-apply
      'vlax-create-object
      (list "ADODB.Stream")
      )
)
(setqxmlDoc (vl-catch-all-apply
   'vlax-create-object
   (list "MSXML2.DOMDocument")
         )
)
(if (vl-catch-all-error-p adoStream)
    (progn (princ "无法创建ADODB.Stream对象")
   (setq adoStream nil)
    )
)
(if (vl-catch-all-error-p xmlDoc)
    (progn (princ "无法创建XML文档对象") (setq xmlDoc nil))
)
(if (and adoStream xmlDoc)
    (progn
      (vl-catch-all-apply
'vlax-put-property
(list adoStream "Type" 1)
      )
      (vl-catch-all-apply 'vlax-invoke (list adoStream "Open"))
      (vl-catch-all-apply
'vlax-invoke
(list adoStream "LoadFromFile" imagePath)
      )
      (setq node (vl-catch-all-apply
       'vlax-invoke-method
       (list xmlDoc "createElement" "temp")
   )
      )
          ; 将二进制数据写入XML节点
      (vl-catch-all-apply
'vlax-put-property
(list node "dataType" "bin.base64")
      )
      (vl-catch-all-apply
'vlax-put-property
(list
    node
    "nodeTypedValue"
    (vlax-invoke-method adoStream "Read" -1)
)
      )
      (setq result (vl-catch-all-apply
         'vlax-get-property
         (list node "text")
       )
      )          ; 获取Base64字符串
      (vl-catch-all-apply
'vlax-invoke-method
(list adoStream "Close")
      )          ; 清理对象
      (vl-catch-all-apply 'vlax-release-object (list adoStream))
      (vl-catch-all-apply 'vlax-release-object (list xmlDoc))
      result
    )
)
result
)
页: [1]
查看完整版本: 如何将图片转换为base64便于发送到ocr服务器识别图片文字