js 进行参数传递 但是参数中包含文字和图片 怎么把图片转成base64或者二进制呢?

 我来答
cmoooo
2013-06-14 · TA获得超过3587个赞
知道小有建树答主
回答量:741
采纳率:0%
帮助的人:668万
展开全部

有一个问题需要弄清楚,才能更准确地回答你的这个问题:


你的图片最后是用来做什么的呢?


这个图片是用来上传?还是用来在浏览器上显示?


如果是用来上传,要知道base64的图片太大之后,格式很容易出错,不建议这么做,而这么做的人怕是也不好找。


如果是在浏览器上显示,你只要传这个图片的URL就可以了,URL本身就是一个字符串,然后使用JS将图片显示到页面上去,这个方法有许多种。


另外,如果你是想要将一个图片转成base64,需要这个工具的话,这里有一个,不过只不过是工具,不能传入到JS里自动转换的。

追问
我需要把图片作为参数  服务器端已经把接收格式限定为二进制的了  所以我现在要想办法根据js得到本地图片的二进制格式
追答

根据你的需要,有两种方案:


一、使用flash将二进制数据库转换为图片后,再转交给JS,具体参考:

http://www.webshowme.com/04js/content.asp?id=2493


这种方案有一个好处,就是兼容各种浏览器,不支持HTML5的浏览器在以flash为后台(客户端的后台)的情况下,都可以将其转换;


二、使用HTML5的<canvas>标签,这个限定很大,必须浏览器支持HTML5才行:

代码如下:

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);

    // 获取二进制图像
    // Firefox 支持 PNG 和 JPEG,你可以使用 img.src 获取原始图像的格式, 但要注意,最图最终会以jpg格式编码
    var dataURL = canvas.toDataURL("image/png");
    return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}



这种二进制向客户端发送图像的方法,目前来看技术还不成熟,或者说这些都是美旁门左道,另类了一些,为什么这么用呢?

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式