@@ -25,14 +25,14 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
2525 < div class ='fl pad1y space-right2 '>
2626 < span class ="strong "> 100% </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 47/47 </ span >
28+ < span class ='fraction '> 53/53 </ span >
2929 </ div >
3030
3131
3232 < div class ='fl pad1y space-right2 '>
33- < span class ="strong "> 83.33 % </ span >
33+ < span class ="strong "> 80.77 % </ span >
3434 < span class ="quiet "> Branches</ span >
35- < span class ='fraction '> 20/24 </ span >
35+ < span class ='fraction '> 21/26 </ span >
3636 </ div >
3737
3838
@@ -46,7 +46,7 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
4646 < div class ='fl pad1y space-right2 '>
4747 < span class ="strong "> 100% </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 47/47 </ span >
49+ < span class ='fraction '> 53/53 </ span >
5050 </ div >
5151
5252
@@ -170,7 +170,19 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
170170< a name ='L111 '> </ a > < a href ='#L111 '> 111</ a >
171171< a name ='L112 '> </ a > < a href ='#L112 '> 112</ a >
172172< a name ='L113 '> </ a > < a href ='#L113 '> 113</ a >
173- < a name ='L114 '> </ a > < a href ='#L114 '> 114</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-neutral "> </ span >
173+ < a name ='L114 '> </ a > < a href ='#L114 '> 114</ a >
174+ < a name ='L115 '> </ a > < a href ='#L115 '> 115</ a >
175+ < a name ='L116 '> </ a > < a href ='#L116 '> 116</ a >
176+ < a name ='L117 '> </ a > < a href ='#L117 '> 117</ a >
177+ < a name ='L118 '> </ a > < a href ='#L118 '> 118</ a >
178+ < a name ='L119 '> </ a > < a href ='#L119 '> 119</ a >
179+ < a name ='L120 '> </ a > < a href ='#L120 '> 120</ a >
180+ < a name ='L121 '> </ a > < a href ='#L121 '> 121</ a >
181+ < a name ='L122 '> </ a > < a href ='#L122 '> 122</ a >
182+ < a name ='L123 '> </ a > < a href ='#L123 '> 123</ a >
183+ < a name ='L124 '> </ a > < a href ='#L124 '> 124</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-neutral "> </ span >
184+ < span class ="cline-any cline-neutral "> </ span >
185+ < span class ="cline-any cline-neutral "> </ span >
174186< span class ="cline-any cline-neutral "> </ span >
175187< span class ="cline-any cline-neutral "> </ span >
176188< span class ="cline-any cline-neutral "> </ span >
@@ -203,8 +215,8 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
203215< span class ="cline-any cline-neutral "> </ span >
204216< span class ="cline-any cline-neutral "> </ span >
205217< span class ="cline-any cline-neutral "> </ span >
206- < span class ="cline-any cline-yes "> 15x </ span >
207- < span class ="cline-any cline-yes "> 15x </ span >
218+ < span class ="cline-any cline-yes "> 9x </ span >
219+ < span class ="cline-any cline-yes "> 9x </ span >
208220< span class ="cline-any cline-neutral "> </ span >
209221< span class ="cline-any cline-neutral "> </ span >
210222< span class ="cline-any cline-yes "> 6x</ span >
@@ -237,6 +249,9 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
237249< span class ="cline-any cline-yes "> 6x</ span >
238250< span class ="cline-any cline-yes "> 6x</ span >
239251< span class ="cline-any cline-neutral "> </ span >
252+ < span class ="cline-any cline-yes "> 6x</ span >
253+ < span class ="cline-any cline-yes "> 6x</ span >
254+ < span class ="cline-any cline-neutral "> </ span >
240255< span class ="cline-any cline-neutral "> </ span >
241256< span class ="cline-any cline-neutral "> </ span >
242257< span class ="cline-any cline-neutral "> </ span >
@@ -253,25 +268,30 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
253268< span class ="cline-any cline-neutral "> </ span >
254269< span class ="cline-any cline-yes "> 2x</ span >
255270< span class ="cline-any cline-yes "> 2x</ span >
256- < span class ="cline-any cline-yes "> 9x </ span >
257- < span class ="cline-any cline-yes "> 9x </ span >
271+ < span class ="cline-any cline-yes "> 3x </ span >
272+ < span class ="cline-any cline-yes "> 3x </ span >
258273< span class ="cline-any cline-neutral "> </ span >
259274< span class ="cline-any cline-neutral "> </ span >
260- < span class ="cline-any cline-yes "> 9x </ span >
275+ < span class ="cline-any cline-yes "> 3x </ span >
261276< span class ="cline-any cline-neutral "> </ span >
262- < span class ="cline-any cline-yes "> 9x </ span >
277+ < span class ="cline-any cline-yes "> 3x </ span >
263278< span class ="cline-any cline-neutral "> </ span >
264- < span class ="cline-any cline-yes "> 9x </ span >
265- < span class ="cline-any cline-yes "> 2x </ span >
279+ < span class ="cline-any cline-yes "> 3x </ span >
280+ < span class ="cline-any cline-yes "> 3x </ span >
266281< span class ="cline-any cline-neutral "> </ span >
267- < span class ="cline-any cline-yes "> 9x </ span >
282+ < span class ="cline-any cline-yes "> 3x </ span >
268283< span class ="cline-any cline-neutral "> </ span >
269- < span class ="cline-any cline-yes "> 9x </ span >
284+ < span class ="cline-any cline-yes "> 3x </ span >
270285< span class ="cline-any cline-neutral "> </ span >
271- < span class ="cline-any cline-yes "> 9x </ span >
286+ < span class ="cline-any cline-yes "> 3x </ span >
272287< span class ="cline-any cline-neutral "> </ span >
273- < span class ="cline-any cline-yes "> 9x</ span >
274- < span class ="cline-any cline-yes "> 9x</ span >
288+ < span class ="cline-any cline-yes "> 3x</ span >
289+ < span class ="cline-any cline-yes "> 3x</ span >
290+ < span class ="cline-any cline-neutral "> </ span >
291+ < span class ="cline-any cline-yes "> 2x</ span >
292+ < span class ="cline-any cline-yes "> 1x</ span >
293+ < span class ="cline-any cline-yes "> 1x</ span >
294+ < span class ="cline-any cline-yes "> 1x</ span >
275295< span class ="cline-any cline-neutral "> </ span >
276296< span class ="cline-any cline-neutral "> </ span >
277297< span class ="cline-any cline-yes "> 2x</ span >
@@ -298,13 +318,15 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
298318 * Compress an image file.
299319 *
300320 * @param {File} file
301- * @param {Object} options - { maxSizeMB=Number.POSITIVE_INFINITY, maxWidthOrHeight, useWebWorker=false, maxIteration = 10, exifOrientation, fileType }
321+ * @param {Object} options
302322 * @param {number} [options.maxSizeMB=Number.POSITIVE_INFINITY]
303323 * @param {number} [options.maxWidthOrHeight=undefined]
324+ * @param {boolean} [options.useWebWorker=false]
304325 * @param {number} [options.maxIteration=10]
305326 * @param {number} [options.exifOrientation] - default to be the exif orientation from the image file
306327 * @param {Function} [options.onProgress] - a function takes one progress argument (progress from 0 to 100)
307328 * @param {string} [options.fileType] - default to be the original mime type from the image file
329+ * @param {number} [options.initialQuality=1.0]
308330 * @returns {Promise<File | Blob>}
309331 */
310332export default async function compress (file, options) {
@@ -337,14 +359,17 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
337359 incProgress()
338360
339361 // exifOrientation
340- options. exifOrientation = options.exifOrientation || < span class ="branch-1 cbranch-no " title ="branch not covered " > await getExifOrientation(file)</ span >
362+ const exifOrientation = options.exifOrientation || < span class ="branch-1 cbranch-no " title ="branch not covered " > await getExifOrientation(file)</ span >
341363 incProgress()
342- const orientationFixedCanvas = (await isAutoOrientationInBrowser) ? < span class ="branch-0 cbranch-no " title ="branch not covered " > maxWidthOrHeightFixedCanvas </ span > : followExifOrientation(maxWidthOrHeightFixedCanvas, options. exifOrientation)
364+ const orientationFixedCanvas = (await isAutoOrientationInBrowser) ? < span class ="branch-0 cbranch-no " title ="branch not covered " > maxWidthOrHeightFixedCanvas </ span > : followExifOrientation(maxWidthOrHeightFixedCanvas, exifOrientation)
343365 incProgress()
344366
345- let quality = 1
367+ let quality = options.initialQuality || 1.0
346368
347- let tempFile = await canvasToFile(orientationFixedCanvas, options.fileType || file.type, file.name, file.lastModified, quality)
369+ const tempFileType = 'image/jpeg'
370+ const outputFileType = options.fileType || file.type
371+
372+ let tempFile = await canvasToFile(orientationFixedCanvas, outputFileType, file.name, file.lastModified, quality)
348373 incProgress()
349374
350375 const origExceedMaxSize = tempFile.size > maxSizeByte
@@ -374,10 +399,10 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
374399
375400 ctx.drawImage(canvas, 0, 0, newWidth, newHeight)
376401
377- if (file.type === 'image/jpeg') {
402+ < span class =" missing-if-branch " title =" else path not taken " > E </ span > if (tempFileType === 'image/jpeg') {
378403 quality *= 0.95
379404 }
380- compressedFile = await canvasToFile(newCanvas, options.fileType || file.type , file.name, file.lastModified, quality)
405+ compressedFile = await canvasToFile(newCanvas, tempFileType , file.name, file.lastModified, quality)
381406
382407 cleanupCanvasMemory(canvas)
383408
@@ -386,6 +411,11 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
386411 currentSize = compressedFile.size
387412 setProgress(Math.min(99, Math.floor((renderedSize - currentSize) / (renderedSize - maxSizeByte) * 100)))
388413 }
414+ if (tempFileType !== outputFileType) {
415+ compressedFile = new Blob([compressedFile], { type: outputFileType })
416+ compressedFile.name = file.name
417+ compressedFile.lastModified = file.lastModified
418+ }
389419
390420 cleanupCanvasMemory(canvas)
391421 cleanupCanvasMemory(newCanvas)
@@ -403,7 +433,7 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
403433 < div class ='footer quiet pad2 space-top1 center small '>
404434 Code coverage generated by
405435 < a href ="https://istanbul.js.org/ " target ="_blank "> istanbul</ a >
406- at Thu Jun 04 2020 13:37:49 GMT+0800 (香港標準時間 )
436+ at Sun Nov 08 2020 23:03:52 GMT+0800 (Hong Kong Standard Time )
407437 </ div >
408438 </ div >
409439 < script src ="prettify.js "> </ script >
0 commit comments