使用技术: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 |
variname = (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 |
stringipath = 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, newRectangle(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 ...
随机推荐
- PHP中英文字符串截取函数无乱码(mb_substr)和获取中英文字符串字数函数(mb_strlen)
mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $length,要截取的字数 $encod ...
- 小课堂Week12 Clean Code Part1
小课堂Week12 Clean Code Part1 今天的主题是函数,让我们看一个函数,找一找其中的"不整洁". 我们也根据这段代码,讨论下对于整洁代码的两个重要原则. publ ...
- linux 使用 pyodbc 访问 ms sqlserver 数据库
一.安装linux下Sqlserver的驱动程序: 我们先来安装SqlServer的驱动程序,再安装ODBC相关的,目的是想尽快可以进行测试,因为在安装完Freetds之后,我们马上就可以在linux ...
- linux 修改系统时间
首先进入/proc/sys/xen,执行以下命令 [root@test]#cd /proc/sys/xen[root@test]#echo 1 > independent_wallclock ...
- 安装使用rspec
一,安装ruby. 二,运行命令,安装rspec的gem包: gem install rspec 会看到如下的结果: Fetching: rspec-core-2.14.7.gem (100%) Fe ...
- 同花顺面试经验(搜索引擎C++后台研发)
1.为什么要网页查重 ,怎么查重 2.软 硬cache是指什么 3.多线程编程:互斥变量 和 条件变量 函数怎么写 4.网络编程: epoll干什么的,有什么功能 5.网络编程:select 和 ep ...
- kettle删除资源库中的转换或者作业
在资源库中新建转换,作业都很简单,那么加入现在不需要其中某个转换或者作业该怎么办呢? 下图是已经存在的转换跟作业 现在需要删除aa这个转换 操作步骤如下: 1.工具----资源库----探索资源库 出 ...
- SequoiaDB版本升级及导入导出工具说明
升级SequoiaDB数据库指导 SequoiaDB安装路径:SDB_HOME=/opt/sequoiadb 数据存储路径:DATABASE=/ opt/sequoiadb/database 一.导出 ...
- Oracle 将普通表转换为分区表
DB:11.2.0.30 将普通表转换为区分表 一.利用原表重建分区表SQL>create table yoon ( id number primary key ,time date ); Ta ...
- python: 命令选项及归类
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... Options and arguments (and corresp ...