If you need to remove all transparent edges, then we simply verify for each of them how much transparent we can cut. Get 4 coordinates by which you need to cut a rectangle (inclusive).
var l, t, r, b; for (l=0; l<width; ++l) for (var q=0; q<height; ++q) if (!isTransparent(l, q)) break; for (r=width-1; r>=l; --r) for (var q=0; q<height; ++q) if (!isTransparent(r, q)) break; for (t=0; t<height; ++t) for (var q=0; q<width; ++q) if (!isTransparent(q, t)) break; for (b=height-1; b>=t; --b) for (var q=0; q<width; ++q) if (!isTransparent(q, b)) break; crop(l, t, r, b);