1
+ /* Utility function to convert a canvas to a BLOB */
2
+ var dataURLToBlob = function ( dataURL ) {
3
+ var BASE64_MARKER = ';base64,' ;
4
+ if ( dataURL . indexOf ( BASE64_MARKER ) == - 1 ) {
5
+ var parts = dataURL . split ( ',' ) ;
6
+ var contentType = parts [ 0 ] . split ( ':' ) [ 1 ] ;
7
+ var raw = parts [ 1 ] ;
8
+
9
+ return new Blob ( [ raw ] , { type : contentType } ) ;
10
+ }
11
+
12
+ var parts = dataURL . split ( BASE64_MARKER ) ;
13
+ var contentType = parts [ 0 ] . split ( ':' ) [ 1 ] ;
14
+ var raw = window . atob ( parts [ 1 ] ) ;
15
+ var rawLength = raw . length ;
16
+
17
+ var uInt8Array = new Uint8Array ( rawLength ) ;
18
+
19
+ for ( var i = 0 ; i < rawLength ; ++ i ) {
20
+ uInt8Array [ i ] = raw . charCodeAt ( i ) ;
21
+ }
22
+
23
+ return new Blob ( [ uInt8Array ] , { type : contentType } ) ;
24
+ }
25
+
26
+
27
+ $ ( '#file' ) . change ( function ( ) {
28
+
29
+ //Baca file dari input
30
+ let file = $ ( this ) [ 0 ] . files [ 0 ]
31
+
32
+ let reader = new FileReader ( ) ;
33
+
34
+ reader . readAsDataURL ( file ) ;
35
+
36
+ reader . onload = ( readEvent ) => {
37
+
38
+ let target = readEvent . target ;
39
+
40
+ let image = new Image ( ) ;
41
+ image . onload = ( imageEvent ) => {
42
+
43
+ let def_width = 300 ;
44
+ let def_percent = ( def_width / image . width ) * 100 ;
45
+
46
+ let canvas = document . createElement ( 'canvas' ) ;
47
+ let width = def_width ;
48
+ let height = image . height * ( def_percent / 100 ) ;
49
+
50
+ canvas . width = width ;
51
+ canvas . height = height ;
52
+
53
+ // canvas.getContext('2d').drawImage()
54
+ canvas . getContext ( '2d' ) . drawImage ( image , 0 , 0 , width , height ) ;
55
+
56
+ let dataURL = canvas . toDataURL ( file . type ) ;
57
+
58
+ // console.log(dataURL);
59
+
60
+ let formdata = new FormData ( ) ;
61
+ let blobImage = dataURLToBlob ( dataURL ) ;
62
+
63
+ formdata . append ( 'file' , blobImage , `resized-image_${ file . name } ` ) ;
64
+
65
+
66
+ $ ( '#preview' ) . attr ( 'src' , dataURL ) ;
67
+
68
+ $ . ajax ( {
69
+ type : "POST" ,
70
+ url : "./upload.php" ,
71
+ success : function ( data ) {
72
+ // your callback here
73
+ console . log ( data ) ;
74
+ } ,
75
+ error : function ( error ) {
76
+ // handle error
77
+ } ,
78
+ async : true ,
79
+ data : formdata ,
80
+ cache : false ,
81
+ contentType : false ,
82
+ processData : false ,
83
+ timeout : 60000
84
+ } ) ;
85
+
86
+ }
87
+
88
+ image . src = target . result
89
+
90
+ }
91
+ } )
0 commit comments