2020 </ h1 >
2121 < div class ='clearfix '>
2222 < div class ='fl pad1y space-right2 '>
23- < span class ="strong "> 93.55 % </ span >
23+ < span class ="strong "> 100 % </ span >
2424 < span class ="quiet "> Statements</ span >
25- < span class ='fraction '> 29/31 </ span >
25+ < span class ='fraction '> 21/21 </ span >
2626 </ div >
2727 < div class ='fl pad1y space-right2 '>
28- < span class ="strong "> 83.33 % </ span >
28+ < span class ="strong "> 90 % </ span >
2929 < span class ="quiet "> Branches</ span >
30- < span class ='fraction '> 15/18 </ span >
30+ < span class ='fraction '> 9/10 </ span >
3131 </ div >
3232 < div class ='fl pad1y space-right2 '>
3333 < span class ="strong "> 100% </ span >
3434 < span class ="quiet "> Functions</ span >
3535 < span class ='fraction '> 1/1</ span >
3636 </ div >
3737 < div class ='fl pad1y space-right2 '>
38- < span class ="strong "> 93.55 % </ span >
38+ < span class ="strong "> 100 % </ span >
3939 < span class ="quiet "> Lines</ span >
40- < span class ='fraction '> 29/31 </ span >
40+ < span class ='fraction '> 21/21 </ span >
4141 </ div >
4242 </ div >
4343 < p class ="quiet ">
@@ -100,23 +100,7 @@ <h1>
100100< a name ='L52 '> </ a > < a href ='#L52 '> 52</ a >
101101< a name ='L53 '> </ a > < a href ='#L53 '> 53</ a >
102102< a name ='L54 '> </ a > < a href ='#L54 '> 54</ a >
103- < a name ='L55 '> </ a > < a href ='#L55 '> 55</ a >
104- < a name ='L56 '> </ a > < a href ='#L56 '> 56</ a >
105- < a name ='L57 '> </ a > < a href ='#L57 '> 57</ a >
106- < a name ='L58 '> </ a > < a href ='#L58 '> 58</ a >
107- < a name ='L59 '> </ a > < a href ='#L59 '> 59</ a >
108- < a name ='L60 '> </ a > < a href ='#L60 '> 60</ a >
109- < a name ='L61 '> </ a > < a href ='#L61 '> 61</ a >
110- < a name ='L62 '> </ a > < a href ='#L62 '> 62</ a >
111- < a name ='L63 '> </ a > < a href ='#L63 '> 63</ a >
112- < a name ='L64 '> </ a > < a href ='#L64 '> 64</ a >
113- < a name ='L65 '> </ a > < a href ='#L65 '> 65</ a >
114- < a name ='L66 '> </ a > < a href ='#L66 '> 66</ a >
115- < a name ='L67 '> </ a > < a href ='#L67 '> 67</ a >
116- < a name ='L68 '> </ a > < a href ='#L68 '> 68</ a >
117- < a name ='L69 '> </ a > < a href ='#L69 '> 69</ a >
118- < a name ='L70 '> </ a > < a href ='#L70 '> 70</ a >
119- < a name ='L71 '> </ a > < a href ='#L71 '> 71</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-neutral "> </ span >
103+ < a name ='L55 '> </ a > < a href ='#L55 '> 55</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-neutral "> </ span >
120104< span class ="cline-any cline-neutral "> </ span >
121105< span class ="cline-any cline-neutral "> </ span >
122106< span class ="cline-any cline-neutral "> </ span >
@@ -136,57 +120,41 @@ <h1>
136120< span class ="cline-any cline-neutral "> </ span >
137121< span class ="cline-any cline-neutral "> </ span >
138122< span class ="cline-any cline-yes "> 6x</ span >
139- < span class ="cline-any cline-no "> </ span >
140- < span class ="cline-any cline-neutral "> </ span >
141- < span class ="cline-any cline-neutral "> </ span >
142123< span class ="cline-any cline-neutral "> </ span >
143124< span class ="cline-any cline-neutral "> </ span >
144- < span class ="cline-any cline-neutral "> </ span >
145- < span class ="cline-any cline-yes "> 6x</ span >
146- < span class ="cline-any cline-yes "> 6x</ span >
147125< span class ="cline-any cline-yes "> 6x</ span >
148126< span class ="cline-any cline-neutral "> </ span >
149127< span class ="cline-any cline-neutral "> </ span >
150128< span class ="cline-any cline-yes "> 6x</ span >
151129< span class ="cline-any cline-yes "> 6x</ span >
152- < span class ="cline-any cline-yes "> 6x</ span >
153130< span class ="cline-any cline-neutral "> </ span >
154- < span class ="cline-any cline-neutral "> </ span >
155- < span class ="cline-any cline-yes "> 6x</ span >
156131< span class ="cline-any cline-yes "> 6x</ span >
157132< span class ="cline-any cline-neutral "> </ span >
158- < span class ="cline-any cline-neutral "> </ span >
159133< span class ="cline-any cline-yes "> 6x</ span >
160- < span class ="cline-any cline-no "> </ span >
161- < span class ="cline-any cline-neutral "> </ span >
162134< span class ="cline-any cline-neutral "> </ span >
163135< span class ="cline-any cline-yes "> 6x</ span >
164- < span class ="cline-any cline-yes "> 6x</ span >
165- < span class ="cline-any cline-yes "> 6x</ span >
166- < span class ="cline-any cline-yes "> 3x</ span >
167- < span class ="cline-any cline-yes "> 5x</ span >
168- < span class ="cline-any cline-yes "> 5x</ span >
169- < span class ="cline-any cline-neutral "> </ span >
170- < span class ="cline-any cline-yes "> 5x</ span >
171- < span class ="cline-any cline-yes "> 5x</ span >
172136< span class ="cline-any cline-neutral "> </ span >
173- < span class ="cline-any cline-yes "> 5x </ span >
137+ < span class ="cline-any cline-yes "> 4x </ span >
174138< span class ="cline-any cline-neutral "> </ span >
175139< span class ="cline-any cline-neutral "> </ span >
176- < span class ="cline-any cline-yes "> 3x</ span >
177140< span class ="cline-any cline-yes "> 2x</ span >
178141< span class ="cline-any cline-yes "> 2x</ span >
142+ < span class ="cline-any cline-yes "> 7x</ span >
143+ < span class ="cline-any cline-yes "> 7x</ span >
144+ < span class ="cline-any cline-yes "> 7x</ span >
179145< span class ="cline-any cline-neutral "> </ span >
180- < span class ="cline-any cline-yes "> 2x</ span >
181- < span class ="cline-any cline-yes "> 2x</ span >
146+ < span class ="cline-any cline-yes "> 7x</ span >
182147< span class ="cline-any cline-neutral "> </ span >
183- < span class ="cline-any cline-yes "> 2x </ span >
148+ < span class ="cline-any cline-yes "> 7x </ span >
184149< span class ="cline-any cline-yes "> 2x</ span >
185150< span class ="cline-any cline-neutral "> </ span >
151+ < span class ="cline-any cline-yes "> 7x</ span >
186152< span class ="cline-any cline-neutral "> </ span >
153+ < span class ="cline-any cline-yes "> 7x</ span >
187154< span class ="cline-any cline-neutral "> </ span >
188- < span class ="cline-any cline-yes "> 6x</ span >
189- < span class ="cline-any cline-neutral "> </ span > </ td > < td class ="text "> < pre class ="prettyprint lang-js "> import { canvasToFile, drawFileInCanvas, followExifOrientation, getExifOrientation, handleMaxWidthOrHeight } from './utils'
155+ < span class ="cline-any cline-neutral "> </ span >
156+ < span class ="cline-any cline-yes "> 2x</ span >
157+ < span class ="cline-any cline-neutral "> </ span > </ td > < td class ="text "> < pre class ="prettyprint lang-js "> import { canvasToFile, drawFileInCanvas, followExifOrientation, getExifOrientation, handleMaxWidthOrHeight, getNewCanvasAndCtx } from './utils'
190158
191159/**
192160 * Compress an image file.
@@ -203,56 +171,40 @@ <h1>
203171 let remainingTrials = options.maxIteration || 10
204172
205173 const maxSizeByte = options.maxSizeMB * 1024 * 1024
206-
207- // no need to compress or resize
208- < span class ="missing-if-branch " title ="if path not taken " > I</ span > if (file.size <= maxSizeByte && typeof options.maxWidthOrHeight === 'undefined') {
209- < span class ="cstat-no " title ="statement not covered " > return file</ span >
210- }
211-
212- let img, canvas, isResized
213174
214175 // drawFileInCanvas
215- let temp = await drawFileInCanvas(file)
216- img = temp[0]
217- canvas = temp[1]
176+ let [img, canvas] = await drawFileInCanvas(file)
218177
219178 // handleMaxWidthOrHeight
220- let temp2 = handleMaxWidthOrHeight(img, canvas, options)
221- canvas = temp2[0]
222- isResized = temp2[1]
179+ canvas = handleMaxWidthOrHeight(canvas, options)
223180
224181 // exifOrientation
225182 options.exifOrientation = options.exifOrientation || < span class ="branch-1 cbranch-no " title ="branch not covered " > await getExifOrientation(file)</ span >
226- canvas = followExifOrientation(img, canvas, options.exifOrientation)
227-
228- // no need to compress or resize
229- < span class ="missing-if-branch " title ="if path not taken " > I</ span > if (file.size <= maxSizeByte && !isResized) {
230- < span class ="cstat-no " title ="statement not covered " > return file</ span >
231- }
183+ canvas = followExifOrientation(canvas, options.exifOrientation)
232184
233185 let quality = 1
234- let compressedFile = await canvasToFile(canvas, file.type, file.name, file.lastModified, quality)
235- if (file.type === 'image/png') {
236- while (remainingTrials-- && compressedFile.size > maxSizeByte) {
237- canvas.width *= 0.9
238- canvas.height *= 0.9
239186
240- const ctx = canvas.getContext('2d')
241- ctx.drawImage(img, 0, 0, canvas.width, canvas.height)
187+ let tempFile = await canvasToFile(canvas, file.type, file.name, file.lastModified, quality)
188+ // check if we need to compress or resize
189+ if (tempFile.size <= maxSizeByte) {
190+ // no need to compress
191+ return tempFile
192+ }
242193
243- compressedFile = await canvasToFile(canvas, file.type, file.name, file.lastModified, quality)
244- }
245- } else { // if (file.type === 'image/jpeg') {
246- while (remainingTrials-- && compressedFile.size > maxSizeByte) {
247- canvas.width *= 0.9
248- canvas.height *= 0.9
194+ let compressedFile = tempFile
195+ while (remainingTrials-- && compressedFile.size > maxSizeByte) {
196+ const newWidth = canvas.width * 0.9
197+ const newHeight = canvas.height * 0.9
198+ const [newCanvas, ctx] = getNewCanvasAndCtx(newWidth, newHeight)
249199
250- const ctx = canvas.getContext('2d')
251- ctx.drawImage(img, 0, 0, canvas.width, canvas.height)
200+ ctx.drawImage(img, 0, 0, newWidth, newHeight)
252201
202+ if (file.type === 'image/jpeg') {
253203 quality *= 0.9
254- compressedFile = await canvasToFile(canvas, file.type, file.name, file.lastModified, quality)
255204 }
205+ compressedFile = await canvasToFile(newCanvas, file.type, file.name, file.lastModified, quality)
206+
207+ canvas = newCanvas
256208 }
257209
258210 return compressedFile
262214</ div > <!-- /wrapper -->
263215< div class ='footer quiet pad2 space-top1 center small '>
264216 Code coverage
265- generated by < a href ="https://istanbul.js.org/ " target ="_blank "> istanbul</ a > at Fri May 31 2019 16:31:31 GMT+0800 (Hong Kong Standard Time)
217+ generated by < a href ="https://istanbul.js.org/ " target ="_blank "> istanbul</ a > at Sat Jun 01 2019 02:19:15 GMT+0800 (Hong Kong Standard Time)
266218</ div >
267219</ div >
268220< script src ="prettify.js "> </ script >
0 commit comments