亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2014年07月28日 10:04:34   投稿:shichen2014  
這篇文章主要介紹了.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;  
    }  
  }  
}

相關文章

  • C#使用Npoi導出Excel并合并行列

    C#使用Npoi導出Excel并合并行列

    這篇文章主要為大家詳細介紹了C#使用Npoi導出Excel并合并行列,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#實現計算一個點圍繞另一個點旋轉指定弧度后坐標值的方法

    C#實現計算一個點圍繞另一個點旋轉指定弧度后坐標值的方法

    這篇文章主要介紹了C#實現計算一個點圍繞另一個點旋轉指定弧度后坐標值的方法,涉及C#針對坐標的數學運算相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • C#設計模式之Mediator中介者模式解決程序員的七夕緣分問題示例

    C#設計模式之Mediator中介者模式解決程序員的七夕緣分問題示例

    這篇文章主要介紹了C#設計模式之Mediator中介者模式解決程序員的七夕緣分問題,簡單說明了中介者模式的定義并結合七夕緣分問題實例分析了中介者模式的具體使用技巧,需要的朋友可以參考下
    2017-09-09
  • C#實現彈窗提示輸入密碼

    C#實現彈窗提示輸入密碼

    這篇文章主要為大家詳細介紹了C#實現彈窗提示輸入密碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#操作SQLite實現數據的增刪改查

    C#操作SQLite實現數據的增刪改查

    SQLite是一個輕量級、跨平臺的關系型數據庫,在小型項目中,方便,易用,同時支持多種開發(fā)語言。本文將用C#語言對SQLite 的一個封裝,實現數據的增刪改查。需要的可以參考一下
    2022-01-01
  • Winform讓DataGridView左側顯示圖片

    Winform讓DataGridView左側顯示圖片

    本文主要介紹在如何讓DataGridView左側顯示圖片,這里主要講解重寫DataGridView的OnRowPostPaint方法,需要的朋友可以參考下。
    2016-05-05
  • 如何利用c#實現通用守護進程

    如何利用c#實現通用守護進程

    這篇文章主要給大家介紹了關于如何利用c#實現通用守護進程的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用c#具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-10-10
  • Unity編輯器資源導入處理函數OnPreprocessAudio用法示例

    Unity編輯器資源導入處理函數OnPreprocessAudio用法示例

    這篇文章主要為大家介紹了Unity編輯器資源導入處理函數OnPreprocessAudio用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • 提示出現unresolved external symbol _main的解決方法

    提示出現unresolved external symbol _main的解決方法

    提示出現unresolved external symbol _main的解決方法...
    2007-11-11
  • C#基于JsonConvert解析Json數據的方法實例

    C#基于JsonConvert解析Json數據的方法實例

    最近初接觸C#語言,發(fā)現JSON解析這塊和JAVA差異過大,下面這篇文章主要給大家介紹了關于C#基于JsonConvert解析Json數據的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04

最新評論