@@ -139,11 +139,14 @@ export async function drawFileInCanvas (file) {
139
139
*/
140
140
export async function canvasToFile ( canvas , fileType , fileName , fileLastModified , quality = 1 ) {
141
141
let file
142
- if ( typeof OffscreenCanvas === 'function' && canvas instanceof OffscreenCanvas ) {
142
+ if ( typeof OffscreenCanvas === 'function' && canvas instanceof OffscreenCanvas ) { // checked on Win Chrome 83, MacOS Chrome 83
143
143
file = await canvas . convertToBlob ( { type : fileType , quality } )
144
144
file . name = fileName
145
145
file . lastModified = fileLastModified
146
- } else {
146
+ // some browser do not support quality parameter, see: https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob
147
+ // } else if (typeof canvas.toBlob === 'function') {
148
+ // file = await new Promise(resolve => canvas.toBlob(resolve, fileType, quality))
149
+ } else { // checked on Win Edge 44, Win IE 11, Win Firefox 76, MacOS Firefox 77, MacOS Safari 13.1
147
150
const dataUrl = canvas . toDataURL ( fileType , quality )
148
151
file = await getFilefromDataUrl ( dataUrl , fileName , fileLastModified )
149
152
}
@@ -257,14 +260,29 @@ export function followExifOrientation (canvas, exifOrientation) {
257
260
258
261
// transform context before drawing image
259
262
switch ( exifOrientation ) {
260
- case 2 : ctx . transform ( - 1 , 0 , 0 , 1 , width , 0 ) ; break ;
261
- case 3 : ctx . transform ( - 1 , 0 , 0 , - 1 , width , height ) ; break ;
262
- case 4 : ctx . transform ( 1 , 0 , 0 , - 1 , 0 , height ) ; break ;
263
- case 5 : ctx . transform ( 0 , 1 , 1 , 0 , 0 , 0 ) ; break ;
264
- case 6 : ctx . transform ( 0 , 1 , - 1 , 0 , height , 0 ) ; break ;
265
- case 7 : ctx . transform ( 0 , - 1 , - 1 , 0 , height , width ) ; break ;
266
- case 8 : ctx . transform ( 0 , - 1 , 1 , 0 , 0 , width ) ; break ;
267
- default : break ;
263
+ case 2 :
264
+ ctx . transform ( - 1 , 0 , 0 , 1 , width , 0 )
265
+ break
266
+ case 3 :
267
+ ctx . transform ( - 1 , 0 , 0 , - 1 , width , height )
268
+ break
269
+ case 4 :
270
+ ctx . transform ( 1 , 0 , 0 , - 1 , 0 , height )
271
+ break
272
+ case 5 :
273
+ ctx . transform ( 0 , 1 , 1 , 0 , 0 , 0 )
274
+ break
275
+ case 6 :
276
+ ctx . transform ( 0 , 1 , - 1 , 0 , height , 0 )
277
+ break
278
+ case 7 :
279
+ ctx . transform ( 0 , - 1 , - 1 , 0 , height , width )
280
+ break
281
+ case 8 :
282
+ ctx . transform ( 0 , - 1 , 1 , 0 , 0 , width )
283
+ break
284
+ default :
285
+ break
268
286
}
269
287
270
288
ctx . drawImage ( canvas , 0 , 0 , width , height )
0 commit comments