国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.net實現裁剪網站上傳圖片的方法

2024-07-10 13:27:52
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了.net實現裁剪網站上傳圖片的方法,比較實用的功能,需要的朋友可以參考下
 
 

本文實例講述了基于.net實現裁剪網站上傳圖片的方法。由于客戶端Javascript不能操作文件,所以只能先上傳圖片再在服務器端剪切。
1、上傳圖片
2、Javascript剪切圖片(其實只是選取要剪切的部分)
3、服務器端剪切
 
(1)在頁面的cs文件中剪切。須放幾個隱藏控件以便回傳js選取的坐標。

其中剪切圖片源碼如下:

using System;  using System.Collections.Generic;  using System.Text;  using System.Drawing;   public class Cut  {    /// <summary>    /// 裁剪圖片    /// </summary>    /// <param name="sourceImg">原圖片路徑</param>    /// <param name="desImg">裁剪圖片路徑</param>    /// <param name="left">X</param>    /// <param name="top">Y</param>    /// <param name="width">寬</param>    /// <param name="height">高</param>    public static void CutImage(string sourceImg, string desImg, int left, int top, int width, int height)    {      System.Drawing.Image img = System.Drawing.Bitmap.FromFile(sourceImg);      System.Drawing.Image imgToSave = new System.Drawing.Bitmap(width, height);      System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(imgToSave);      RectangleF sourceRect = new RectangleF(left, top, width, height);      RectangleF destinationRect = new RectangleF(0, 0, width, height);       g.DrawImage(img,            destinationRect,            sourceRect,            GraphicsUnit.Pixel            );      g.Save();      imgToSave.Save(desImg, System.Drawing.Imaging.ImageFormat.Jpeg);      g.Dispose();      imgToSave.Dispose();      img.Dispose();    }    }  

(2)在ashx中剪切,可回傳文件流。用參數傳遞坐標。    

using System;  using System.Web;  using System.Drawing;  using System.IO;   public class ImgCropper_WebHandler : IHttpHandler  {    public void ProcessRequest(HttpContext context)    {      string Pic = Convert.ToString(context.Request["p"]);      int PointX = Convert.ToInt32(context.Request["x"]);      int PointY = Convert.ToInt32(context.Request["y"]);      int CutWidth = Convert.ToInt32(context.Request["w"]);      int CutHeight = Convert.ToInt32(context.Request["h"]);      int PicWidth = Convert.ToInt32(context.Request["pw"]);      int PicHeight = Convert.ToInt32(context.Request["ph"]);       context.Response.ContentType = "image/jpeg";      ResetImg(context, System.Web.HttpContext.Current.Server.MapPath(Pic), PicWidth, PicHeight, PointX, PointY, CutWidth, CutHeight).WriteTo(context.Response.OutputStream);    }     public MemoryStream ResetImg(HttpContext context, string ImgFile, int PicWidth, int PicHeight, int PointX, int PointY, int CutWidth, int CutHeight)    {      Image imgPhoto = Image.FromFile(ImgFile);      Bitmap bmPhoto = new Bitmap(CutWidth, CutHeight, System.Drawing.Imaging.PixelFormat.Format24bppRgb);       Graphics gbmPhoto = Graphics.FromImage(bmPhoto);      gbmPhoto.DrawImage(imgPhoto, new Rectangle(0, 0, CutWidth, CutHeight), PointX * imgPhoto.Width / PicWidth, PointY * imgPhoto.Height / PicHeight, CutWidth * imgPhoto.Width / PicWidth, CutHeight * imgPhoto.Height / PicHeight, GraphicsUnit.Pixel);       //保存圖片到服務器      bmPhoto.Save(context.Server.MapPath("upload/") + Guid.NewGuid() + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);       //生成文件流回傳      MemoryStream ms2 = new MemoryStream();      bmPhoto.Save(ms2, System.Drawing.Imaging.ImageFormat.Jpeg);       imgPhoto.Dispose();      gbmPhoto.Dispose();      bmPhoto.Dispose();       return ms2;    }      public bool IsReusable    {      get     {        return false;      }    }  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丰原市| 台安县| 堆龙德庆县| 敦煌市| 乐昌市| 福州市| 乳山市| 丹巴县| 东宁县| 桐柏县| 安多县| 莱阳市| 平舆县| 浦县| 高陵县| 林西县| 方城县| 双鸭山市| 金湖县| 肇源县| 安平县| 罗江县| 灵山县| 麻阳| 建阳市| 台中县| 卓尼县| 从江县| 宁远县| 南靖县| 磐安县| 东港市| 邯郸县| 固阳县| 额敏县| 綦江县| 荔浦县| 讷河市| 林芝县| 泰宁县| 南木林县|