新人菜鸟1 2022-05-13 00:19 采纳率: 0%
浏览 18

远程图片可以生成base64吗?研究了几天了,找到食材,不会做做菜

第一段是获得远程图片输出二进制代码到浏览器的,第二段是本地图片转换成base64的,如何将两个功能合并呢?谢谢

<%
dim id
id="https://img-home.csdnimg.cn/images/20201124032511.png"
Response.Buffer = True
Dim objXMLHTTP, xml
Set xml = Server.CreateObject("Microsoft.XMLHTTP") '创建对象
xml.Open "GET",""&id&"",False ' '设置对象
xml.Send '发送请求
if xml.status=200 then
Response.AddHeader "Content-Disposition", "attachment;filename="&id&"" '添加头给这个文件
Response.ContentType = "application/image/*" '设置输出类型
Response.BinaryWrite xml.responseBody '输出二进制到浏览器
end if
Set xml = Nothing
%>
<%
Function ImagesToBase64(FileName)
Dim xml
Dim root
Dim fs
Dim FilePath
Dim objStream
Dim objXMLDoc
Dim Base64
''定义变量完结
'创建对像
FilePath=Server.MapPath(FileName)
getFileExt = Mid(FilePath, InstrRev(FilePath, ".") + 1)

Set objXMLDoc=Server.CreateObject("msxml2.FreeThreadedDOMDocument")
'设定生成XML文档的根为 Base64Data
objXMLDoc.loadXML ""

Set fs = Server.createObject("Scripting.FileSystemObject") ''服务器需要FSO组件
If fs.FileExists(FilePath) Then '判断File文件是否存在
'用 stream 来读取数据
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1
objStream.Open
objStream.LoadFromFile FilePath

objXMLDoc.documentElement.dataType = "bin.base64"
objXMLDoc.documentElement.nodeTypedvalue = objStream.Read
'数据流读取结束.得到了值 objXMLDoc
'创建XML文件
      Set xml = Server.CreateObject("msxml2.FreeThreadedDOMDocument")
      xml.load objXMLDoc
      If xml.ReadyState>2 Then
        Set root=xml.getElementsByTagName("Base64Data")
        Base64="<img src=""data:image/"&getFileExt&";base64,"&vbcrlf&root.Item(0).Text&""">"
      else
        Base64=""
      End If
      Set xml=Nothing
Set objStream=Nothing

else
Base64=""
End If

Set fs=Nothing
Set objXMLDoc=Nothing

ImagesToBase64=Base64

End Function
%>

<%
'测试时同文件夹应该包含该图片文件。
response.Write ImagesToBase64("1.jpg")
%>

  • 写回答

1条回答 默认 最新

  • Yijing Sun 2022-05-13 15:13
    关注

    你好,
    你试一下这个呢。

    function getBase64Image(img) {
        var canvas = document.createElement("canvas");
        canvas.width = img.width;
        canvas.height = img.height;
        var ctx = canvas.getContext("2d");
        ctx.drawImage(img, 0, 0, img.width, img.height);
        var dataURL = canvas.toDataURL("image/png");
        return dataURL // return dataURL.replace("data:image/png;base64,", ""); 
    }
    function myBase64() { 
        var img = document.createElement('img');//创建新节点
        var inImgUrl=$('#inImg').attr('src') ;//获取远程图片url
        var inImgw=$('#inImg').width();//获取当前远程图片在当前屏幕上的宽带
        var inImgh=$('#inImg').height();//获取当前远程图片在当前屏幕上的高度
        img.src = inImgUrl; //把图片url赋值给新节点
        img.setAttribute('width',inImgw);//设置新图片节点的宽
        img.setAttribute('height',inImgh);//设置新图片节点的高
        img.onload =function() { 
            var newImg = getBase64Image(img); //编译base64
            //alert(newImg);
            img.src = newImg; 
        } 
        $('#posterCanvasHeadimg').html(img); //插入新建的img
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 5月13日

悬赏问题

  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害