public ActionResult Crop() { //se alterar aqui nao esqueça de mudar no metodo Crop() const int dimensaoMax = 200; int x1, x2, y1, y2 = 0; try { x1 = int.Parse(Request.Form["x1"]); x2 = int.Parse(Request.Form["x2"]); y1 = int.Parse(Request.Form["y1"]); y2 = int.Parse(Request.Form["y2"]); } catch { Response.StatusCode = (int)System.Net.HttpStatusCode.BadRequest; return(Json(new { error = "Invalid size" })); } int largura = x2 - x1; int altura = y2 - y1; //de acordo com o estilo no css if (largura < dimensaoMax || altura < dimensaoMax) { Response.StatusCode = (int)System.Net.HttpStatusCode.BadRequest; return(Json(new { error = "Image should be at least 130x130" })); } if (largura != altura) { Response.StatusCode = (int)System.Net.HttpStatusCode.BadRequest; return(Json(new { error = "Image should be square" })); } //pega a imagem do azure gerando um nome previsivel var nomeImagemOriginal = "fullsize-" + NimbusUser.UserId; HMACMD5 md5 = new HMACMD5(NimbusConfig.GeneralHMACKey); md5.ComputeHash(Encoding.Unicode.GetBytes(nomeImagemOriginal)); nomeImagemOriginal = Base32.ToString(md5.Hash).ToLower() + ".jpg"; var origBlob = new AzureBlob(Const.Azure.AvatarContainer, nomeImagemOriginal); var streamImgOrig = origBlob.DownloadToMemoryStream(); var img = new ImageManipulation(streamImgOrig); img.Crop(x1, y1, x2, y2); img.Resize(dimensaoMax, dimensaoMax); string pathFinal = UploadAvatar(img, NimbusUser.UserId.ToString()); using (var db = DatabaseFactory.OpenDbConnection()) { var user = db.Where <User>(u => u.Id == NimbusUser.UserId).FirstOrDefault(); //apaga imagem antiga //if (user.AvatarUrl != null && user.AvatarUrl != "/images/av130x130/person_icon.png") //{ // try // { // var uriAntigo = new Uri(user.AvatarUrl).Segments; // var blobAntigo = new AzureBlob(Const.Azure.AvatarContainer, uriAntigo[uriAntigo.Length - 1]); // blobAntigo.Delete(); // } // catch { } //} user.AvatarUrl = pathFinal; db.Save(user); //ATENÇÃO! Ao alterar informações presentes no NimbusUser, //lembre-se de atualizar no cache também! //Session[Const.UserSession] = DatabaseLogin.GetNimbusPrincipal(user); } //depois que salvar no azure retorna por json p mostrar na tela a imagem final origBlob.Delete(); //adiciona query string para atrapalhar o cache =) pathFinal += "?x=" + DateTime.Now.ToFileTime().ToString(); return(Json(new { url = pathFinal })); }