1. > 生活百科 >

png转base64(success)

如何把一个文件转成base64

/** * Convert an image * to a base陆四 string * @param {String} url * @param {Function} callback * @param {String} [outputFormat=image/png] */ function convertImgToBase陆四(url, callback, outputFormat){ var canvas = document.createElement('CANVAS'), ctx = canvas.getContext('贰d'), img = new Image; img.crossOrigin = 'Anonymous'; img.onload = function(){ var dataURL; canvas.height = img.height; canvas.width = img.width; ctx.drawImage(img, 0, 0); dataURL = canvas.toDataURL(outputFormat); callback.call(this, dataURL); canvas = null; }; img.src = url;

前端将图片转换为base64位,使用ajax传递到后台,但是图片经过base64转换成字符串后非常长,无法使用ajax

前端生成的代码最终格式如下:

data:image/png;base64,xxxxxxxxxx...........

后端这样解码

base64=base64.Replace("data:image/png;base64,", "");

byte[] bytes =Convert.FromBase64String(base64);

MemoryStream memStream = new MemoryStream(bytes);

BinaryFormatter binFormatter = new BinaryFormatter;

return(System.Drawing.Image)binFormatter.Deserialize(memStream);

string base64Str = "图片的BASE64字符串";

byte[] bytes = System.Convert.FromBase64String(base64Str);

using (System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes))

{return System.Drawing.Image.FromStream(ms);}

ajax({,url : form.action,,type : "POST",,data : formData,

dataType:"text",,processData : false,,success:function(data).window.location.href="${ctx}"+data;

xhr:function//在jquery函数中直接使用ajax的XMLHttpRequest对象

var xhr = new XMLHttpRequest

xhr.upload.addEventListener

前端与iOS图片与base64转换

iOS----->前端

UIImage*originImage=[UIImage imageNamed:@"originImage.png"];

NSData*data=UIImageJPEGRepresentation(originImage,1.0f);

NSString*encodedImageStr=[data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

然后 再拼上前缀data:image/png;base64,

这样就拼接出来了一个前端用来展示的 base64的字符串

前端------->iOS

与上面的流程相反,先从前端获取前端生成的base64字符串

截去data:image/png;base64,前缀

NSData*decodedImageData=[[NSData alloc]initWithBase64EncodedString:encodedImageStr options:NSDataBase64DecodingIgnoreUnknownCharacters];

UIImage*decodedImage=[UIImage imageWithData:decodedImageData];

这样就得到iOS想要的image对象。

小程序 使用upng.js 把小程序选择的图片转换为base64

有时候会遇到后端需要前端获取的图片文件转换成base64,在传给后台

小程序有专门的选择图片接口,

wx.chooseImage(OBJECT)

但是这个只是返回一个图片的临时路径,并不是文件数据本身。

小程序暂时没有接口直接转base64的

所以我们需要使用canvas和canvasGetImageData(小程序版本1.9.0以后要才有)先获取图片内容,

再通过插件upng.js插件实现图片转base64(所需插件文件附件中)

1. 把upng.js和pako.min.js文件放到项目中

2. 在pages下的页面js文件中导入

var upng = require('../../utils/upng.js');

这里只需要导入npng.js ,pako.min.js是在npng,js里面调用

3. 建一个canvas

chooseImage">人脸测试

// 画布

// 生成base64位图片展示 变量imgbase64

need-to-insert-img

4. 添加js点击chooseImage事件

chooseImage: function() {

var that = this;

var coss_signature = wx.getStorageSync('cos_signature');

var canvasID = "imgCanvas";

var canvas = wx.createCanvasContext(canvasID)

wx.chooseImage({

sourceType: ['album', 'camera'],

sizeType: ['original'],

count: 1,

success: function (res) {

var tempFilePaths = res.tempFilePaths;

// 获取文件路径

var filePath = tempFilePaths[0];

// 1. 绘制图片至canvas

canvas.drawImage(filePath, 0, 0, 300, 200)

// 绘制完成后执行回调,API 1.7.0

canvas.draw(false, function(res){

// 2. 获取图像数据, API 1.9.0

wx.canvasGetImageData({

canvasId: canvasID,

x: 0,

y: 0,

width: 300,

height: 200,

success(res) {

// 3. png编码

let pngData = upng.encode([res.data.buffer], res.width, res.height)

// 4. base64编码

let base64 = wx.arrayBufferToBase64(pngData)

// ...

that.setData({

imgbase64: base64

})

}

})

})

}

})

}

5. 实现

need-to-insert-img

need-to-insert-img

tips

png转base64(success)png转base64(success)


画布画的图片的长和宽是固定的,这个按照自己需求设置。

可以通过小程序的

wx.getImageInfo(OBJECT)

获取长和宽

相关链接

upng.js:

wx-cardscanner: 有时候会遇到后端需要前端获取的图片文件转换成base64,在传给后台

小程序有专门的选择图片接口,

但是这个只是返回一个图片的临时路径,并不是文件数据本身。

小程序暂时没有接口直接转base64的

所以我们需要使用canvas和canvasGetImageData(小程序版本1.9.0以后要才有)先获取图片内容,

再通过插件upng.js插件实现图片转base64(所需插件文件附件中)

1. 把upng.js和pako.min.js文件放到项目中

2. 在pages下的页面js文件中导入

var upng = require('../../utils/upng.js');

这里只需要导入npng.js ,pako.min.js是在npng,js里面调用

3. 建一个canvas

chooseImage">人脸测试

// 画布

// 生成base64位图片展示 变量imgbase64

png转base64(success)png转base64(success)


4. 添加js点击chooseImage事件

chooseImage: function() {

var that = this;

var coss_signature = wx.getStorageSync('cos_signature');

var canvasID = "imgCanvas";

var canvas = wx.createCanvasContext(canvasID)

wx.chooseImage({

sourceType: ['album', 'camera'],

sizeType: ['original'],

count: 1,

success: function (res) {

var tempFilePaths = res.tempFilePaths;

// 获取文件路径

var filePath = tempFilePaths[0];

// 1. 绘制图片至canvas

canvas.drawImage(filePath, 0, 0, 300, 200)

// 绘制完成后执行回调,API 1.7.0

canvas.draw(false, function(res){

// 2. 获取图像数据, API 1.9.0

wx.canvasGetImageData({

canvasId: canvasID,

x: 0,

y: 0,

width: 300,

height: 200,

success(res) {

// 3. png编码

let pngData = upng.encode([res.data.buffer], res.width, res.height)

// 4. base64编码

let base64 = wx.arrayBufferToBase64(pngData)

// ...

png转base64(success)png转base64(success)


that.setData({

imgbase64: base64

})

}

})

})

}

})

}

5. 实现

tips

画布画的图片的长和宽是固定的,这个按照自己需求设置。

可以通过小程序的

获取长和宽

相关链接

upng.js:

wx-cardscanner:

图片Base64编码数据格式

最近公司的某个接口需要将图片以Base64编码后的字符串作为参数。借此了解图片的Base64编码。

图片进过Base64编码后生成的数据如下:

data:image/gif;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAAP///yH5B…EoqQqJKAIBaQOVKHAXr3t7txgBjboSvB8EpLoFZywOAo3LFE5lYs/QW9LT1TRk1V7S2xYJADs=

这种形式的数据被称为 Data URI scheme

Data URI scheme 是用于访问直接嵌入HTML或CSS的数据的 URI scheme (URI方案),并以以下格式描述。

由于可以内嵌在HTML或CSS中,因此可以减少请求数量。

参考资料:

今更だけどdata URI Schemeって何?

data:image/png;base64的用法详解

图片Base64编码的利与弊分析

前端将图片转换为base64位无法使用ajax传递怎么解决?

前端生成的代码最终格式如下:

data:image/png;base64,xxxxxxxxxx...........

后端这样解码

base64=base64.Replace("data:image/png;base64,", "");

byte[] bytes =Convert.FromBase64String(base64);

MemoryStream memStream = new MemoryStream(bytes);

BinaryFormatter binFormatter = new BinaryFormatter;

return(System.Drawing.Image)binFormatter.Deserialize(memStream);

string base64Str = "图片的BASE64字符串";

byte[] bytes = System.Convert.FromBase64String(base64Str);

using (System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes))

{return System.Drawing.Image.FromStream(ms);}

ajax({,url : form.action,,type : "POST",,data : formData,

dataType:"text",,processData : false,,success:function(data).window.location.href="${ctx}"+data;

xhr:function//在jquery函数中直接使用ajax的XMLHttpRequest对象

var xhr = new XMLHttpRequest

xhr.upload.addEventListener

data:image/png;base64用法

data URI scheme 允许我们使用内联(inline-code)的方式在网页中包含数据,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。常用于将图片嵌入网页。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, website.service08@gmail.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息