最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.net實現(xiàn)裁剪網(wǎng)站上傳圖片的方法

 更新時間:2014年07月28日 10:04:34   投稿:shichen2014  
這篇文章主要介紹了.net實現(xiàn)裁剪網(wǎng)站上傳圖片的方法,比較實用的功能,需要的朋友可以參考下

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

其中剪切圖片源碼如下:

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中剪切,可回傳文件流。用參數(shù)傳遞坐標(biāo)。   

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);  
 
    //保存圖片到服務(wù)器  
    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;  
    }  
  }  
}

相關(guān)文章

  • C#的自定義語法糖的使用詳解

    C#的自定義語法糖的使用詳解

    這篇文章主要介紹了C#的自定義語法糖的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • 桌面浮動窗口(類似惡意廣告)的實現(xiàn)詳解

    桌面浮動窗口(類似惡意廣告)的實現(xiàn)詳解

    本篇文章是對桌面浮動窗口的實現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • C#實現(xiàn)鐘表程序設(shè)計

    C#實現(xiàn)鐘表程序設(shè)計

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)鐘表程序設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 關(guān)于C#中async/await的用法實例詳解

    關(guān)于C#中async/await的用法實例詳解

    這篇文章主要介紹了關(guān)于C#中async/await的用法,今天寫一個demo徹底搞明白async/await的用法,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • 一文搞懂c# await,async執(zhí)行流

    一文搞懂c# await,async執(zhí)行流

    這篇文章主要介紹了c# await,async執(zhí)行流的相關(guān)知識,文章講解的非常細(xì)致,代碼幫助理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • AOP從靜態(tài)代理到動態(tài)代理(Emit實現(xiàn))詳解

    AOP從靜態(tài)代理到動態(tài)代理(Emit實現(xiàn))詳解

    AOP為Aspect Oriented Programming的縮寫,意思是面向切面編程的技術(shù)。下面這篇文章主要給大家介紹了關(guān)于AOP從靜態(tài)代理到動態(tài)代理(Emit實現(xiàn))的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • C#實現(xiàn)List.Sort()使用小計

    C#實現(xiàn)List.Sort()使用小計

    在C#開發(fā)中,List是常見的一種集合類型,其提供了一個 Sort() 方法來實現(xiàn)對集合的排序,本文主要介紹了C#實現(xiàn)List.Sort()使用小計,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • C#中WPF使用多線程調(diào)用窗體組件的方法

    C#中WPF使用多線程調(diào)用窗體組件的方法

    這篇文章主要介紹了C#中WPF使用多線程調(diào)用窗體組件的方法,涉及C#中多線程的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • C#函數(shù)式編程中的標(biāo)準(zhǔn)高階函數(shù)詳解

    C#函數(shù)式編程中的標(biāo)準(zhǔn)高階函數(shù)詳解

    這篇文章主要介紹了C#函數(shù)式編程中的標(biāo)準(zhǔn)高階函數(shù)詳解,本文講解了何為高階函數(shù)、Map、 Filter、Fold等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • C#基于COM方式讀取Excel表格的方法

    C#基于COM方式讀取Excel表格的方法

    這篇文章主要介紹了C#基于COM方式讀取Excel表格的方法,涉及C# COM組件的調(diào)用與Excel表格的使用技巧,需要的朋友可以參考下
    2016-07-07

最新評論

邵阳市| 柘城县| 若尔盖县| 木兰县| 岐山县| 抚顺市| 大竹县| 灵寿县| 枞阳县| 攀枝花市| 文水县| 商河县| 井研县| 平安县| 和硕县| 贵定县| 芒康县| 绥江县| 广昌县| 通州市| 汉沽区| 宁陕县| 陆良县| 绥化市| 鹤岗市| 古浪县| 焦作市| 营口市| 青川县| 武夷山市| 扎赉特旗| 泽库县| 铜陵市| 安康市| 四子王旗| 惠来县| 永和县| 思南县| 金寨县| 和平区| 长葛市|