.net实现裁剪网站上传图片的方法
作者:shichen2014 时间:2021-09-24 01:41:05
本文实例讲述了基于.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;
}
}
}
标签:.net,裁剪,图片,方法
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java操作MongoDB数据库的示例代码
2023-11-23 04:15:51
java代码实现C盘文件统计工具
2021-06-23 01:22:38
![](https://img.aspxhome.com/file/2023/4/67664_0s.png)
JAVA如何调用Shell脚本
2022-11-25 01:13:13
Java常用HASH算法总结【经典实例】
2023-04-26 00:34:55
java 使用idea将工程打成jar并创建成exe文件类型执行的方法详解
2022-12-07 02:49:30
![](https://img.aspxhome.com/file/2023/2/60702_0s.png)
Java动态 代理的应用详解
2023-11-25 08:15:24
C#可用于登录验证码的四位随机数生成方法
2021-08-01 00:31:01
新手小心:c语言中强符号与弱符号的使用
2023-06-24 15:16:23
C#中调用SAPI实现语音合成的2种方法
2023-07-07 09:36:00
c# 如何用lock解决缓存击穿
2022-12-03 14:27:55
springboot使用自定义注解实现aop切面日志
2023-11-11 09:14:48
springcloud微服务之Eureka配置详解
2021-06-15 14:35:28
Android WindowManger实现桌面悬浮窗功能
2023-08-01 02:16:10
![](https://img.aspxhome.com/file/2023/6/84706_0s.webp)
Maven打包时如何指定启动类
2021-06-16 11:48:00
![](https://img.aspxhome.com/file/2023/2/67682_0s.png)
springboot以FTP方式上传文件到远程服务器
2022-10-13 06:19:27
java高级用法之注解和反射讲义
2023-10-08 14:40:16
![](https://img.aspxhome.com/file/2023/3/65773_0s.png)
Java反射 Field类的使用全方位解析
2022-09-01 13:22:45
Java信号量Semaphore原理及代码实例
2021-10-02 21:55:08
java解析Excel的方法(xls、xlsx两种格式)
2021-10-12 16:29:39
![](https://img.aspxhome.com/file/2023/0/68520_0s.png)
解决Properties属性文件中的值有等号和换行的小问题
2023-09-07 19:22:58