@@ -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 '> 53/53 </ span >
28+ < span class ='fraction '> 47/47 </ span >
2929 </ div >
3030
3131
3232 < div class ='fl pad1y space-right2 '>
33- < span class ="strong "> 80.77 % </ span >
33+ < span class ="strong "> 82.61 % </ span >
3434 < span class ="quiet "> Branches</ span >
35- < span class ='fraction '> 21/26 </ span >
35+ < span class ='fraction '> 19/23 </ 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 '> 53/53 </ span >
49+ < span class ='fraction '> 47/47 </ span >
5050 </ div >
5151
5252
@@ -174,13 +174,8 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
174174< a name ='L115 '> </ a > < a href ='#L115 '> 115</ a >
175175< a name ='L116 '> </ a > < a href ='#L116 '> 116</ a >
176176< 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 >
177+ < a name ='L118 '> </ a > < a href ='#L118 '> 118</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-neutral "> </ span >
178+ < span class ="cline-any cline-neutral "> </ span >
184179< span class ="cline-any cline-neutral "> </ span >
185180< span class ="cline-any cline-neutral "> </ span >
186181< span class ="cline-any cline-neutral "> </ span >
@@ -215,8 +210,8 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
215210< span class ="cline-any cline-neutral "> </ span >
216211< span class ="cline-any cline-neutral "> </ span >
217212< span class ="cline-any cline-neutral "> </ span >
218- < span class ="cline-any cline-yes "> 9x </ span >
219- < span class ="cline-any cline-yes "> 9x </ span >
213+ < span class ="cline-any cline-yes "> 8x </ span >
214+ < span class ="cline-any cline-yes "> 8x </ span >
220215< span class ="cline-any cline-neutral "> </ span >
221216< span class ="cline-any cline-neutral "> </ span >
222217< span class ="cline-any cline-yes "> 6x</ span >
@@ -244,7 +239,6 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
244239< span class ="cline-any cline-yes "> 6x</ span >
245240< span class ="cline-any cline-neutral "> </ span >
246241< span class ="cline-any cline-yes "> 6x</ span >
247- < span class ="cline-any cline-yes "> 6x</ span >
248242< span class ="cline-any cline-neutral "> </ span >
249243< span class ="cline-any cline-yes "> 6x</ span >
250244< span class ="cline-any cline-yes "> 6x</ span >
@@ -257,51 +251,45 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
257251< span class ="cline-any cline-neutral "> </ span >
258252< span class ="cline-any cline-yes "> 6x</ span >
259253< span class ="cline-any cline-neutral "> </ span >
260- < span class ="cline-any cline-yes "> 4x </ span >
261- < span class ="cline-any cline-yes "> 4x </ span >
254+ < span class ="cline-any cline-yes "> 5x </ span >
255+ < span class ="cline-any cline-yes "> 5x </ span >
262256< span class ="cline-any cline-neutral "> </ span >
263257< span class ="cline-any cline-neutral "> </ span >
264- < span class ="cline-any cline-yes "> 2x </ span >
265- < span class ="cline-any cline-yes "> 2x </ span >
266- < span class ="cline-any cline-yes "> 2x </ span >
258+ < span class ="cline-any cline-yes "> 1x </ span >
259+ < span class ="cline-any cline-yes "> 1x </ span >
260+ < span class ="cline-any cline-yes "> 1x </ span >
267261< span class ="cline-any cline-neutral "> </ span >
268262< span class ="cline-any cline-neutral "> </ span >
263+ < span class ="cline-any cline-yes "> 1x</ span >
264+ < span class ="cline-any cline-yes "> 1x</ span >
269265< span class ="cline-any cline-yes "> 2x</ span >
270266< span class ="cline-any cline-yes "> 2x</ span >
271- < span class ="cline-any cline-yes "> 3x</ span >
272- < span class ="cline-any cline-yes "> 3x</ span >
273- < span class ="cline-any cline-neutral "> </ span >
274267< span class ="cline-any cline-neutral "> </ span >
275- < span class ="cline-any cline-yes "> 3x</ span >
276268< span class ="cline-any cline-neutral "> </ span >
277- < span class ="cline-any cline-yes "> 3x </ span >
269+ < span class ="cline-any cline-yes "> 2x </ span >
278270< span class ="cline-any cline-neutral "> </ span >
279- < span class ="cline-any cline-yes "> 3x</ span >
280- < span class ="cline-any cline-yes "> 3x</ span >
271+ < span class ="cline-any cline-yes "> 2x</ span >
281272< span class ="cline-any cline-neutral "> </ span >
282- < span class ="cline-any cline-yes "> 3x</ span >
273+ < span class ="cline-any cline-yes "> 2x</ span >
274+ < span class ="cline-any cline-yes "> 2x</ span >
283275< span class ="cline-any cline-neutral "> </ span >
284- < span class ="cline-any cline-yes "> 3x </ span >
276+ < span class ="cline-any cline-yes "> 2x </ span >
285277< span class ="cline-any cline-neutral "> </ span >
286- < span class ="cline-any cline-yes "> 3x </ span >
278+ < span class ="cline-any cline-yes "> 2x </ span >
287279< span class ="cline-any cline-neutral "> </ span >
288- < span class ="cline-any cline-yes "> 3x</ span >
289- < span class ="cline-any cline-yes "> 3x</ span >
280+ < span class ="cline-any cline-yes "> 2x</ span >
290281< span class ="cline-any cline-neutral "> </ span >
291282< span class ="cline-any cline-yes "> 2x</ span >
283+ < span class ="cline-any cline-neutral "> </ span >
284+ < span class ="cline-any cline-neutral "> </ span >
285+ < span class ="cline-any cline-yes "> 1x</ span >
286+ < span class ="cline-any cline-yes "> 1x</ span >
292287< span class ="cline-any cline-yes "> 1x</ span >
293288< span class ="cline-any cline-yes "> 1x</ span >
294289< span class ="cline-any cline-yes "> 1x</ span >
295290< span class ="cline-any cline-neutral "> </ span >
296- < span class ="cline-any cline-neutral "> </ span >
297- < span class ="cline-any cline-yes "> 2x</ span >
298- < span class ="cline-any cline-yes "> 2x</ span >
299- < span class ="cline-any cline-yes "> 2x</ span >
300- < span class ="cline-any cline-yes "> 2x</ span >
301- < span class ="cline-any cline-yes "> 2x</ span >
302- < span class ="cline-any cline-neutral "> </ span >
303- < span class ="cline-any cline-yes "> 2x</ span >
304- < span class ="cline-any cline-yes "> 2x</ span >
291+ < span class ="cline-any cline-yes "> 1x</ span >
292+ < span class ="cline-any cline-yes "> 1x</ span >
305293< span class ="cline-any cline-neutral "> </ span >
306294< span class ="cline-any cline-neutral "> </ span > </ td > < td class ="text "> < pre class ="prettyprint lang-js "> import {
307295 canvasToFile,
@@ -327,10 +315,11 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
327315 * @param {Function} [options.onProgress] - a function takes one progress argument (progress from 0 to 100)
328316 * @param {string} [options.fileType] - default to be the original mime type from the image file
329317 * @param {number} [options.initialQuality=1.0]
318+ * @param {number} previousProgress - for internal try catch rerunning start from previous progress
330319 * @returns {Promise<File | Blob>}
331320 */
332- export default async function compress (file, options) {
333- let progress = 0
321+ export default async function compress (file, options, previousProgress = 0 ) {
322+ let progress = previousProgress
334323
335324 function incProgress (inc = 5) {
336325 progress += inc
@@ -361,12 +350,11 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
361350 // exifOrientation
362351 const exifOrientation = options.exifOrientation || < span class ="branch-1 cbranch-no " title ="branch not covered " > await getExifOrientation(file)</ span >
363352 incProgress()
364- const orientationFixedCanvas = (await isAutoOrientationInBrowser) ? < span class ="branch-0 cbranch-no " title ="branch not covered " > maxWidthOrHeightFixedCanvas </ span > : followExifOrientation(maxWidthOrHeightFixedCanvas, exifOrientation)
353+ const orientationFixedCanvas = (await isAutoOrientationInBrowser() ) ? < span class ="branch-0 cbranch-no " title ="branch not covered " > maxWidthOrHeightFixedCanvas </ span > : followExifOrientation(maxWidthOrHeightFixedCanvas, exifOrientation)
365354 incProgress()
366355
367356 let quality = options.initialQuality || 1.0
368357
369- const tempFileType = 'image/jpeg'
370358 const outputFileType = options.fileType || file.type
371359
372360 let tempFile = await canvasToFile(orientationFixedCanvas, outputFileType, file.name, file.lastModified, quality)
@@ -399,23 +387,17 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
399387
400388 ctx.drawImage(canvas, 0, 0, newWidth, newHeight)
401389
402- < span class ="missing-if-branch " title ="else path not taken " > E</ span > if (tempFileType === 'image/jpeg') {
403- quality *= 0.95
404- }
405- compressedFile = await canvasToFile(newCanvas, tempFileType, file.name, file.lastModified, quality)
390+ quality *= 0.95
391+ compressedFile = await canvasToFile(newCanvas, outputFileType, file.name, file.lastModified, quality)
406392
407393 cleanupCanvasMemory(canvas)
408394
409395 canvas = newCanvas
410396
411397 currentSize = compressedFile.size
398+ // console.log('currentSize', currentSize)
412399 setProgress(Math.min(99, Math.floor((renderedSize - currentSize) / (renderedSize - maxSizeByte) * 100)))
413400 }
414- if (tempFileType !== outputFileType) {
415- compressedFile = new Blob([compressedFile], { type: outputFileType })
416- compressedFile.name = file.name
417- compressedFile.lastModified = file.lastModified
418- }
419401
420402 cleanupCanvasMemory(canvas)
421403 cleanupCanvasMemory(newCanvas)
@@ -433,7 +415,7 @@ <h1><a href="index.html">All files</a> image-compression.js</h1>
433415 < div class ='footer quiet pad2 space-top1 center small '>
434416 Code coverage generated by
435417 < a href ="https://istanbul.js.org/ " target ="_blank "> istanbul</ a >
436- at Sun Nov 08 2020 23:03:52 GMT+0800 (Hong Kong Standard Time)
418+ at Wed Jan 06 2021 01:44:51 GMT+0800 (Hong Kong Standard Time)
437419 </ div >
438420 </ div >
439421 < script src ="prettify.js "> </ script >
0 commit comments