使用技术:Asp.net MVC与jquery.uploadify,Jcrop
首先上页面
01 |
< strong ><!DOCTYPE html> |
04 |
< meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" /> |
06 |
< link href = "http://www.cnblogs.com/CSS/base.css" rel = "stylesheet" type = "text/css" /> |
07 |
< script src = "http://www.cnblogs.com/Js/jquery-1.7.1.min.js" type = "text/javascript" ></ script > |
08 |
< script src = "http://www.cnblogs.com/Js/uploadify/swfobject.js" type = "text/javascript" ></ script > |
09 |
< script src = "http://www.cnblogs.com/Js/uploadify/jquery.uploadify.v2.1.4.min.js" type = "text/javascript" ></ script > |
10 |
< link href = "http://www.cnblogs.com/Js/uploadify/uploadify.css" rel = "stylesheet" type = "text/css" /> |
11 |
< script src = "http://www.cnblogs.com/Js/crop/jquery.Jcrop.min.js" type = "text/javascript" ></ script > |
12 |
< link href = "http://www.cnblogs.com/Js/crop/jquery.Jcrop.css" rel = "stylesheet" type = "text/css" /> |
13 |
< style type = "text/css" > |
28 |
background-color: #e8f0f6; |
46 |
< input type = "file" id = "uploadify" name = "uploadify" /> |
51 |
< div id = "img-prev-container" > |
52 |
< img id = "img-preview" /> |
54 |
< img id = "img-uploadify" /> |
55 |
< form action = "/Crop/tryCrop" method = "post" > |
56 |
< input type = "hidden" name = "x" id = "x" /> |
57 |
< input type = "hidden" name = "y" id = "y" /> |
58 |
< input type = "hidden" name = "w" id = "w" /> |
59 |
< input type = "hidden" name = "h" id = "h" /> |
60 |
< input type = "hidden" name = "img" id = "img" /> |
61 |
< input type = "submit" value = "剪裁" /> |
JS
01 |
<script type= "text/javascript" > |
03 |
var jcrop_api, boundx, boundy; |
05 |
function updateCoords(c) { |
11 |
function updatePreview(c) { |
12 |
if (parseInt(c.w) > 0) { |
13 |
/* 商必须与img-preview宽高一致 */ |
17 |
$( '#img-preview' ).css({ |
18 |
width: Math.round(rx * boundx) + 'px' , |
19 |
height: Math.round(ry * boundy) + 'px' , |
20 |
marginLeft: '-' + Math.round(rx * c.x) + 'px' , |
21 |
marginTop: '-' + Math.round(ry * c.y) + 'px' |
26 |
$( "#uploadify" ).uploadify({ |
27 |
'uploader' : 'http://www.cnblogs.com/Js/uploadify/uploadify.swf' , |
28 |
'script' : '/Crop/upload' , |
29 |
'cancelImg' : 'http://www.cnblogs.com/Js/uploadify/cancel.png' , |
31 |
'queueID' : 'fileQueue' , |
33 |
'buttonText' : 'upload image' , |
36 |
'fileDesc' : 'jpg,gif' , |
37 |
'fileExt' : '*.jpg;*.gif' , |
38 |
'sizeLimit' : '819200' , |
39 |
'onComplete' : function (event, queueID, fileObj, response, data) { |
40 |
var result = eval( '(' + response + ')' ); |
41 |
if ( '0' == result.id) { |
42 |
$( '#img-up' ).remove(); |
43 |
$( '#img-crop' ).css( "display" , "block" ); |
45 |
var iname = (result.mess).substring((result.mess).lastIndexOf( "/" ) + 1, (result.mess).length); |
48 |
$( '#img-preview,#img-uploadify' ).attr( "src" , result.mess); |
50 |
$( '#img-uploadify' ).Jcrop({ |
51 |
onChange: updatePreview, |
52 |
onSelect: updatePreview, |
54 |
onSelect: updateCoords, |
55 |
setSelect: [0, 0, 200, 200] |
57 |
var bounds = this .getBounds(); |
62 |
} else if ( '1' == result.id) { |
01 |
public class CropController : Controller |
03 |
public ActionResult Index() |
09 |
public ActionResult upload(HttpPostedFileBase Filedata) |
13 |
Image image = Image.FromStream(Filedata.InputStream); |
14 |
string ipath = Path.Combine( "Images" , Path.GetFileName(Filedata.FileName)); |
15 |
string spath = Path.Combine(HttpContext.Server.MapPath( "~" ), ipath); |
18 |
return Json( new { id = "0" , mess = string .Format( "{0}{1}/{2}" , BaseUrl, "Images" , Filedata.FileName), iw = image.Width, ih = image.Height }); |
22 |
return Json( new { id = "1" , mess = ex.Message }); |
26 |
public void tryCrop( string img, int x, int y, int w, int h) |
28 |
Image image = Image.FromFile(Path.Combine(HttpContext.Server.MapPath( "~" ), "Images" , img)); |
29 |
Crop(image, w, h, x, y).Save(Path.Combine(HttpContext.Server.MapPath( "~" ), "Images" , "v" + img)); |
31 |
Response.Redirect( string .Format( "{0}{1}/{2}" , BaseUrl, "Images" , "v" + img)); |
39 |
return Request.Url.Scheme + "://" + Request.Url.Authority + Request.ApplicationPath.TrimEnd( '/' ) + '/' ; |
44 |
public static Image Crop(Image image, int width, int height, int x, int y) |
46 |
Bitmap bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb); |
47 |
bmp.SetResolution(image.HorizontalResolution, image.VerticalResolution); |
49 |
using (Graphics graphic = Graphics.FromImage(bmp)) |
51 |
graphic.SmoothingMode = SmoothingMode.AntiAlias; |
52 |
graphic.InterpolationMode = InterpolationMode.HighQualityBicubic; |
53 |
graphic.PixelOffsetMode = PixelOffsetMode.HighQuality; |
54 |
graphic.DrawImage(image, new Rectangle(0, 0, width, height), x, y, width, height, GraphicsUnit.Pixel); |
转自:http://www.cnblogs.com/yoer/archive/2012/02/18/asp_net_mvc_image_upload_crop.html
- 简单2步实现 asp.net mvc ckeditor 图片上传
1.打开ckeditor 包下的 config.js,添加一句 配置(PS:ckeditor 很多功能都在该配置文件里配置),如下: config.filebrowserImageUploadUrl ...
- c# ASP.NET MVC easyui-filebox 图片上传和显示
原文:https://www.cnblogs.com/huatao/p/4727398.html https://www.cnblogs.com/weiweithe/p/4363458.html 表单 ...
- MVC图片上传、浏览、删除 ASP.NET MVC之文件上传【一】(八) ASP.NET MVC 图片上传到服务器
MVC图片上传.浏览.删除 1.存储配置信息 在web.config中,添加配置信息节点 <appSettings> <add key="UploadPath" ...
- ASP.NET MVC+LayUI视频上传
前言: 前段时间在使用APS.NET MVC+LayUI做视频上传功能的时,发现当上传一些内存比较大的视频就会提示上传失败,后来通过查阅相关资料发现.NET MVC框架为考虑安全问题,在运行时对请求的 ...
- Asp.net mvc 大文件上传 断点续传
Asp.net mvc 大文件上传 断点续传 进度条 概述 项目中需要一个上传200M-500M的文件大小的功能,需要断点续传.上传性能稳定.突破asp.net上传限制.一开始看到51CTO上的这 ...
- 探索Asp.net mvc 的文件上传
(转自:http://www.cnblogs.com/n-pei/archive/2010/10/15/1852635.html) 最近因为TeamVideo需要用到视频和图片上传功能,所以试着Goo ...
- 探索Asp.net mvc 的文件上传(由浅入深)
代码下载:http://files.cnblogs.com/n-pei/mvcfileupload.zip 最近因为TeamVideo需要用到视频和图片上传功能,所以试着Google了很多资料,和大家 ...
- ASP.NET MVC HttpPostedFileBase文件上传
HttpPostedFileBase文件上传,支持多文件一次上传,如有图片,则支持略缩图保存 文件传输信息封装 /// <summary> /// 文件生成方式 /// </summ ...
- Mvc 批量图片上传
首先导入文件(官网上下载 kindeditor ): <link href="~/kindeditor-4.1.11-zh-CN/kindeditor/themes/default/d ...
随机推荐
- 【转】MessageBox
MessageBox对话框是比较常用的一个信息对话框,其不仅能够定义显示的信息内容.信息提示图标,而且可以定义按钮组合及对话框的标题,是一个功能齐全的信息对话框. 1.函数原型及参数 function ...
- [.ashx檔?泛型处理例程?]基础入门#2....FileUpload上传前,预览图片(两种作法--ashx与JavaScript)
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/20/ashx_beginner_02_fileupload_picture_p ...
- Linux学习-0627
1.文件处理命令ls愿意:list权限:所有用户ls -a all 所有文件ls -l long 详细信息ls -d directory 查看目录,目录自己详细信息选项可以组合使用, ls -ld ...
- 一个朋友js图表开发遇到的问题 解决思路c和js
引言 不求知道一切, 只求发现一件 -- 乔治·西蒙·欧姆 附注:那些存在于梦幻中的事迹,那些儿时梦中的人物,每每看起,都觉得 .哎 .... 岁月 ... 一直在努力 ... ...
- [Environment Build] Maven环境配置
1. 下载并解压maven文件 2. 在环境变量中配置一个JAVA_HOME的变量,指向你本地的JDK 3. 在系统变量中新建一个名为:MAVEN_HOME的变量,指向你的maven解压文件的bin目 ...
- [Letcode] 1. Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...
- 最大似然估计(MLE)和最大后验概率(MAP)
最大似然估计: 最大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”.简单而言,假设我们要统计全国人口的身高,首先假设这个身高服从服从正态分布,但是该分布的均值与方差未知 ...
- Android:简单实现ViewPager+TabHost+TabWidget实现导航栏导航和滑动切换
viewPager是v4包里的一个组件,可以实现滑动显示多个界面. android也为viewPager提供了一个adapter,此adapter最少要重写4个方法: public int getCo ...
- js jquery 判断IE有效方法
jquery1.9以前 $.browser.msie jquery1.9更高版本 $.browser.msie = /msie/.test(navigator.userAgent.toLowerCas ...
- Quartus13.0破解方法
一定要按照步骤顺序才能破解,这里很关键 1.下载和打开Quartus II破解器,选择“应用”,选择“是”,找到bin(64位系统是bin64)目录下的sys_cpt.dll,“打开” 2.然后将li ...