.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;
    }
  }
}
(0)

相关推荐

  • php+js实现图片的上传、裁剪、预览、提交示例

    首先用到的语言是php.插件imgareaselect(下载地址),没有太多花哨的样式,index.php代码如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.or

  • jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享

    网页端 裁剪图片,不需要经过服务器. 这个是用 https://github.com/mailru/FileAPI 框架实现的.配合jcrop. 高级浏览器 使用 canvas 裁剪,ie6 7 8使用 flash过度. 核心代码: var el = $('input').get(0); seajs.use(['gallery/jcrop/0.9.12/jcrop.css','gallery/jcrop/0.9.12/jcrop.js'] ,function(){ FileAPI.event.o

  • jQuery实现图片上传和裁剪插件Croppie

    在很多应用需要上传本地图片然后再按尺寸适当裁剪以符合网站对图片尺寸的要求.最常见的就是各用户系统要求用户上传和裁剪头像的应用.今天我给大家介绍的是一款基于HTML5和jQuery的图片上传和裁剪插件,它叫Croppie. 运行效果图: HTML 首先我们将相关js和css文件载入head中. <script src="jquery.min.js"></script> <script src="croppie.min.js"><

  • ASP.NET简单好用功能齐全图片上传工具类(水印、缩略图、裁剪等)

    使用方法: UploadImage ui = new UploadImage(); /***可选参数***/ ui.SetWordWater = "哈哈";//文字水印 // ui.SetPicWater = Server.MapPath("2.png");//图片水印(图片和文字都赋值图片有效) ui.SetPositionWater = 4;//水印图片的位置 0居中.1左上角.2右上角.3左下角.4右下角 ui.SetSmallImgHeight = &quo

  • WEB前端实现裁剪上传图片功能

    最后的效果如下: 这里面有几个功能,第一个是支持拖拽,第二个压缩,第三个是裁剪编辑,第四个是上传和上传进度显示,下面依次介绍每个功能的实现: 1. 拖拽显示图片 拖拽读取的功能主要是要兼听html5的drag事件,这个没什么好说的,查查api就知道怎么做了,主要在于怎么读取用户拖过来的图片并把它转成base64以在本地显示. var handler = { init: function($container){ //需要把dragover的默认行为禁掉,不然会跳页 $container.on("

  • JavaWeb实现裁剪图片上传完整代码

    本文实例为大家分享了JavaWeb实现裁剪图片上传完整案例,供大家参考,具体内容如下 实现思路 •使用jcrop插件手机要裁剪图片的坐标  •将收集到的参数传递到后台,在后台使用java图形对象绘制图像进行裁剪 ◦后台处理流程: 1.将上传的图片按按照比例进行压缩后上传到文件服务器,并且将压缩后的图片保存在本地临时目录中. 2.将压缩后的图片回显到页面,使用jcrop进行裁剪,手机裁剪坐标(x,y,width,height) ■@paramx 目标切片起点坐标X ■@param y 目标切片起点

  • .net实现裁剪网站上传图片的方法

    本文实例讲述了基于.net实现裁剪网站上传图片的方法.由于客户端Javascript不能操作文件,所以只能先上传图片再在服务器端剪切. 1.上传图片 2.Javascript剪切图片(其实只是选取要剪切的部分) 3.服务器端剪切   (1)在页面的cs文件中剪切.须放几个隐藏控件以便回传js选取的坐标. 其中剪切图片源码如下: using System; using System.Collections.Generic; using System.Text; using System.Drawi

  • Java实现给网站上传图片盖章的方法

    本文实例讲述了Java实现给网站上传图片盖章的方法.分享给大家供大家参考.具体如下: 最近无聊,上了一会校友录,觉的校友录的图片都会加入一个章,呵呵,自己也就做了一个,不过只适合jpg格式.发出来给大家研究研究.欢迎讨论! 很老的代码了 /************************************************ * <p>java对图片的操作(只能使用jpg)</p> * 对图片的签章<br> * 对图片的缩图<br> * <p

  • Angular下H5上传图片的方法(可多张上传)

    最近做的项目中用到了angular下上传图片功能,在做的过程中遇到了许多问题,最终都得以解决 angular上传时和普通上传时过程差不多,只不过是要不一些东西转化为angular的东西. 1.ng-file-select,指令angular是没此功能的,其实也是转化成了change事件,不多说,直接上代码 angular.module('myApp') .directive('ngFileSelect', [ '$parse', '$timeout', function($parse, $tim

  • BootStrap使用file-input插件上传图片的方法

    最近在写自己的个人网站 ,前端使用的bootstrap框架 ,做到上传图片功能的时候网上找到一个基于bootstrap的图片上传框架 file-input 插件, 这个插件做的非常符合我的审美观,所以简单记录一下这个插件的使用方法 首先根据自己的项目路径引入插件css和js文件 注意locale语言文件在fileinput.min.js文件之后引入 <!-- file input --> <link href="../../css/fileinput.min.css"

  • python opencv对图像进行旋转且不裁剪图片的实现方法

    最近在做深度学习时需要用到图像处理相关的操作,在度娘上找到的图片旋转方法千篇一律,旋转完成的图片都不是原始大小,很苦恼,于是google到歪果仁的网站扒拉了一个方法,亲测好用,再次嫌弃天下文章一大抄的现象,虽然我也是抄歪果仁的. 废话不多说了,直接贴代码了. def rotate_bound(image, angle): # grab the dimensions of the image and then determine the # center (h, w) = image.shape[

  • JS实现探测网站链接的方法【测试可用】

    本文实例讲述了JS实现探测网站链接的方法.分享给大家供大家参考,具体如下: 如果想通过程序探测一个网站链接是否存在,可以通过服务器端高级语言编程实现,其实客户端的JavaScript也是可以探测的,下面通过一个技巧来探测网站链接. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&q

  • JAVA使用爬虫抓取网站网页内容的方法

    本文实例讲述了JAVA使用爬虫抓取网站网页内容的方法.分享给大家供大家参考.具体如下: 最近在用JAVA研究下爬网技术,呵呵,入了个门,把自己的心得和大家分享下 以下提供二种方法,一种是用apache提供的包.另一种是用JAVA自带的. 代码如下: // 第一种方法 //这种方法是用apache提供的包,简单方便 //但是要用到以下包:commons-codec-1.4.jar // commons-httpclient-3.1.jar // commons-logging-1.0.4.jar

  • ASP.net中网站访问量统计方法代码

    一.建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间(IP_DateTime),些表的信息本人只保存一天的信息,如果要统计每个月的信息则要保存一个月.因为我不太懂对数据日志的操作,所以创建此表,所以说我笨吧,哈哈. 二.在Global.asax中获取用户信息 在Global.asax的Session_Start即新会话启用时获取有关的信息,同时在这里实现在线人数.访问总人数的增量统计,代

  • js验证上传图片的方法

    本文实例讲述了js验证上传图片的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <hea

  • asp.net基于Web Service实现远程上传图片的方法

    本文实例讲述了asp.net基于Web Service实现远程上传图片的方法.分享给大家供大家参考,具体如下: 页面调用代码: 前提添加Web 引用 HttpFileCollection files = HttpContext.Current.Request.Files; string filePath = files[0].FileName; string fileName = filePath.Substring(filePath.LastIndexOf("//") + 1); b

随机推荐