Skip to content

Commit 6734fd4

Browse files
committed
fixing issue #57
1 parent ba63f66 commit 6734fd4

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

lib/image-compression.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)