@@ -61,7 +61,10 @@ export default async function compress (file, options) {
61
61
62
62
let quality = options . initialQuality || 1.0
63
63
64
- let tempFile = await canvasToFile ( orientationFixedCanvas , options . fileType || file . type , file . name , file . lastModified , quality )
64
+ const tempFileType = options . fileType || 'image/jpeg'
65
+ const outputFileType = options . fileType || file . type
66
+
67
+ let tempFile = await canvasToFile ( orientationFixedCanvas , outputFileType , file . name , file . lastModified , quality )
65
68
incProgress ( )
66
69
67
70
const origExceedMaxSize = tempFile . size > maxSizeByte
@@ -91,10 +94,10 @@ export default async function compress (file, options) {
91
94
92
95
ctx . drawImage ( canvas , 0 , 0 , newWidth , newHeight )
93
96
94
- if ( file . type === 'image/jpeg' ) {
97
+ if ( tempFileType === 'image/jpeg' ) {
95
98
quality *= 0.95
96
99
}
97
- compressedFile = await canvasToFile ( newCanvas , options . fileType || file . type , file . name , file . lastModified , quality )
100
+ compressedFile = await canvasToFile ( newCanvas , tempFileType , file . name , file . lastModified , quality )
98
101
99
102
cleanupCanvasMemory ( canvas )
100
103
@@ -103,6 +106,11 @@ export default async function compress (file, options) {
103
106
currentSize = compressedFile . size
104
107
setProgress ( Math . min ( 99 , Math . floor ( ( renderedSize - currentSize ) / ( renderedSize - maxSizeByte ) * 100 ) ) )
105
108
}
109
+ if ( tempFileType !== outputFileType ) {
110
+ compressedFile = new Blob ( [ compressedFile ] , { type : outputFileType } )
111
+ compressedFile . name = file . name
112
+ compressedFile . lastModified = file . lastModified
113
+ }
106
114
107
115
cleanupCanvasMemory ( canvas )
108
116
cleanupCanvasMemory ( newCanvas )
0 commit comments