Code:
function thumb(src, cb) {
var img = new Image, max=250 ;
img.onload = function() {
var v = img,
h = v.height,
w = v.width;
var oh = h,
ow = w;
if (w > max || h > max ) {
w = max ;
h = Math.floor( h / (ow/max ) );
}
var c = document.createElement("canvas");
c.height= h;
c.width= w;
var ctx = c.getContext("2d");
ctx.drawImage(v, 0, 0, w, h);
var i = new Image(w, h);
cb( c.toDataURL("image/jpeg", 0.25) );
};
img.src=src;
}
this function accepts an image url and a callback, to which a re-sized and compressed jpeg's data URL is passed.
I'm not sure how you got the bits to your server, but you can "rip" the data url using "".slice() + window.atob() to get the binary data if you need it.
i set the max dimension (w or h) to 250, feel free to customize to your constraints.
if you have image data and not a url, get a blob url to feed to the function using the window.URL class.
Bookmarks