I guess your original was more optimised than mine.
A tool like this should definitely check to make sure it has actually reduced the file size and, if not, just return the original with a note that it couldn't make any gains.
The result is dependent on your Browser. This library uses the Browser's native `ctx.toDataURL('image/jpeg', quality)` method to re-encode the image. The actual compression algorithm is not implemented in JavaScript.
I was really hoping this would implement some complex algorithm or at least be an interesting implementation, however, it seems to just divide the image height/width by the aspect ratio:
As I understand it, this library draws the image into a Canvas to then re-compress the Canvas' via the Browser's native `toDataURL('image/jpeg', quality);`. You can optionally specify a width/height to downscale the image.
Imho the readme needs to state what the library actually does. E.g.
"This takes a user image from a file input, optionally resizes it, and returns a JPEG, PNG or WebP as a Blob, ready to upload."
13 comments
[ 3.2 ms ] story [ 30.0 ms ] threadname: Fuckscape_d80352_5915762.jpg
type: image/jpeg
size: 19.14 KB
Output (compressed)
name: Fuckscape_d80352_5915762.jpg
type: image/jpeg
size: 20.64 KB (-7.85% off)
So your image-compressor actually adds 7.85% to the filesize? Maybe I don't understand the meaning of compression, but shouldn't it be smaller?
Input (original) name: the-northern-trifid-nebula-8499-1920x1200.jpg type: image/jpeg size: 737.26 KB
Output (compressed) name: the-northern-trifid-nebula-8499-1920x1200.jpg type: image/jpeg size: 263.17 KB (64.30% off)
I guess your original was more optimised than mine.
A tool like this should definitely check to make sure it has actually reduced the file size and, if not, just return the original with a note that it couldn't make any gains.
https://github.com/xkeshi/image-compressor/blob/master/src/i...
Imho the readme needs to state what the library actually does. E.g.
"This takes a user image from a file input, optionally resizes it, and returns a JPEG, PNG or WebP as a Blob, ready to upload."
<EOF>
(For very naive definitions of "optimal")