@@ -61,7 +61,10 @@ export default async function compress (file, options) {
6161
6262 let quality = options . initialQuality || 1.0
6363
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 )
6568 incProgress ( )
6669
6770 const origExceedMaxSize = tempFile . size > maxSizeByte
@@ -91,10 +94,10 @@ export default async function compress (file, options) {
9194
9295 ctx . drawImage ( canvas , 0 , 0 , newWidth , newHeight )
9396
94- if ( file . type === 'image/jpeg' ) {
97+ if ( tempFileType === 'image/jpeg' ) {
9598 quality *= 0.95
9699 }
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 )
98101
99102 cleanupCanvasMemory ( canvas )
100103
@@ -103,6 +106,11 @@ export default async function compress (file, options) {
103106 currentSize = compressedFile . size
104107 setProgress ( Math . min ( 99 , Math . floor ( ( renderedSize - currentSize ) / ( renderedSize - maxSizeByte ) * 100 ) ) )
105108 }
109+ if ( tempFileType !== outputFileType ) {
110+ compressedFile = new Blob ( [ compressedFile ] , { type : outputFileType } )
111+ compressedFile . name = file . name
112+ compressedFile . lastModified = file . lastModified
113+ }
106114
107115 cleanupCanvasMemory ( canvas )
108116 cleanupCanvasMemory ( newCanvas )
0 commit comments