js 进行参数传递 但是参数中包含文字和图片 怎么把图片转成base64或者二进制呢?
1个回答
展开全部
有一个问题需要弄清楚,才能更准确地回答你的这个问题:
你的图片最后是用来做什么的呢?
这个图片是用来上传?还是用来在浏览器上显示?
如果是用来上传,要知道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,/, "");
}
这种二进制向客户端发送图像的方法,目前来看技术还不成熟,或者说这些都是美旁门左道,另类了一些,为什么这么用呢?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询