1+ /*
2+ * @Author : SUNSHINE
3+ * @Date : 2017-03-18 19:03:26
4+ * @Last Modified by: SUNSHINE
5+ * @Last Modified time: 2017-03-18 19:15:31
6+ */
7+
8+ 'use strict' ;
9+ // 【canvas ---> dataURL】 (从canvas获取dataURL)
10+ // var dataurl = canvas.toDataURL('image/png');
11+ // var dataurl = canvas.toDataURL('image/jpeg', 0.8);
12+
13+ // 【File/Blob ---> dataURL】
14+ function readBlobAsDataURL ( blob , callback ) {
15+ var reader = new FileReader ( ) ;
16+ reader . onload = function ( e ) { callback ( e . target . result ) ; } ;
17+ reader . readAsDataURL ( blob ) ;
18+ }
19+ // readBlobAsDataURL(blob, function (dataurl){
20+ // console.log(dataurl);
21+ // });
22+ // readBlobAsDataURL(file, function (dataurl){
23+ // console.log(dataurl);
24+ // });
25+
26+ // 【dataURL ---> Blob】
27+ function dataURLtoBlob ( dataurl ) {
28+ var arr = dataurl . split ( ',' ) , mime = arr [ 0 ] . match ( / : ( .* ?) ; / ) [ 1 ] ,
29+ bstr = atob ( arr [ 1 ] ) , n = bstr . length , u8arr = new Uint8Array ( n ) ;
30+ while ( n -- ) {
31+ u8arr [ n ] = bstr . charCodeAt ( n ) ;
32+ }
33+ return new Blob ( [ u8arr ] , { type :mime } ) ;
34+ }
35+ var blob = dataURLtoBlob ( 'data:text/plain;base64,YWFhYWFhYQ==' ) ;
36+
37+ // 【dataURL ---> canvas】
38+ // 先构造Image对象,src为dataURL,onload后绘制到canvas
39+ var img = new Image ( ) ;
40+ img . onload = function ( ) {
41+ canvas . drawImage ( img ) ;
42+ } ;
43+ img . src = dataurl ;
44+
45+ // 【File/Blob ---> canvas】
46+ // 先转换成url,然后构造Image对象,src为dataURL,图片onload后绘制到canvas
47+ // 利用上面的 readBlobAsDataURL 函数,由File,Blob对象得到dataURL格式的url,再参考 dataURL图片数据绘制到canvas
48+ readBlobAsDataURL ( file , function ( dataurl ) {
49+ var img = new Image ( ) ;
50+ img . onload = function ( ) {
51+ canvas . drawImage ( img ) ;
52+ } ;
53+ img . src = dataurl ;
54+ } ) ;
55+
56+ // 【Canvas ---> Blob】Ajax发送
57+ // 先从canvas获取dataurl, 再将dataurl转换为Blob对象
58+ var dataurl = canvas . toDataURL ( 'image/png' ) ;
59+ var blob = dataURLtoBlob ( dataurl ) ;
60+ // 使用ajax发送
61+ var fd = new FormData ( ) ;
62+ fd . append ( "image" , blob , "image.png" ) ;
63+ var xhr = new XMLHttpRequest ( ) ;
64+ xhr . open ( 'POST' , '/server' , true ) ;
65+ xhr . send ( fd ) ;
0 commit comments