截图上传功能 imageAreaselect

前台:

<head>
<meta name="viewport" content="width=device-width" />
<title>img3</title>
<script src="~/Scripts/jquery-2.1.4.min.js"></script>
<link href="~/Scripts/MyJsLibrary/css/imgareaselect-default.css" rel="stylesheet" />
<script src="~/Scripts/MyJsLibrary/jquery.imgareaselect.min.js"></script>
<script type="text/javascript">
$(function () {
$(document).ready(function () {
$(‘img#imgselect‘).imgAreaSelect({
selectionColor:‘blue‘,
x1:20,y1:10,x2:120,y2:110,
maxWidth:100,maxHeitht:100,
minWidth:100,minHeight:100,
selectionOpacity:0.1,
handles: true,
aspectRatio:‘1:1‘,
onSelectEnd: preview
});
$(‘#button1‘).click(function () {
if (checkImgType($(‘#imgFile‘)[0])) {
$(this).parent().submit();
}
});
$(‘#button2‘).click(function () {
alert($(this).parent().submit());
});
})
function getValue(selection) {
$(‘input[name=x1]‘).val(selection.x1);
$(‘input[name=y1]‘).val(selection.y1);
$(‘input[name=width]‘).val(Math.round(100 / (selection.width || 1) * 300));
$(‘input[name=height]‘).val(Math.round(100 / (selection.height || 1) * 300));
}
function preview(img, selection) {
if (selection.width > 49) {
//getValue(selection);
var defultWidth = $("img#imgselect").width();
var defultHeight = $("img#imgselect").height();
console.info("width:" + defultWidth + "Height:" + defultHeight);
var scaleX = 200 / (selection.width || 1);
var scaleY = 200 / (selection.height || 1);//200px的框
var scaleX1 = 100 / (selection.width || 1);
var scaleY1 = 100 / (selection.height || 1);//100px的框
//获取上传图片的默认width,Height
$(‘#preview200‘).css({
width: Math.round(scaleX * defultWidth) + ‘px‘,//先把图片缩小想要的框的大小,比如200的大小
height: Math.round(scaleY * defultHeight) + ‘px‘,//然后在把图片放大图片的大小。
marginLeft: ‘-‘ + Math.round(scaleX * selection.x1) + ‘px‘,
marginTop: ‘-‘ + Math.round(scaleY * selection.y1) + ‘px‘
});
$(‘#preview100‘).css({
width: Math.round(scaleX1 * defultWidth) + ‘px‘,
height: Math.round(scaleY1 * defultHeight) + ‘px‘,
marginLeft: ‘-‘ + Math.round(scaleX1 * selection.x1) + ‘px‘,
marginTop: ‘-‘ + Math.round(scaleY1 * selection.y1) + ‘px‘
});
$("#x1").val(Math.round(selection.x1));
$("#x2").val(Math.round(selection.x2-selection.x1));//截取得宽度
$("#y1").val(Math.round(selection.y1));
$("#y2").val(Math.round(selection.y2 - selection.y1));//截取得高度
}
}

/**检查图片上传类型*/
function checkImgType(obj){
var imgFile = ‘‘;
//获取图片的全路径
var imgFilePath = getImgFullPath(obj);
var endIndex = imgFilePath.lastIndexOf(‘\\‘);
var lastIndex = imgFilePath.length-endIndex-1;
if (endIndex != -1)
imgFile= imgFilePath.substr(endIndex+1,lastIndex);
else
imgFile = imgFilePath;
var tag = true;
endIndex = imgFilePath.lastIndexOf(‘.‘);
if (endIndex == -1)
tag = false;
var ImgName = imgFilePath.substr(endIndex+1,lastIndex);
ImgName = ImgName.toUpperCase();
if (ImgName !=‘GIF‘ && ImgName !=‘JPG‘ && ImgName !=‘PNG‘ && ImgName !=‘BMP‘){
tag=false;
}
if (!tag) {
alert(‘上传图片的文件类型必须为: *.gif,*.jpg,*.png,*.bmp,请重新选择!‘)
alert(‘你逗我么‘);
// Upload.clear(obj);
return false;
}
return true;
}
function getImgFullPath(obj) {
if (obj) {
//ie
if (window.navigator.userAgent.indexOf(‘MSIE‘) >= 1) {
obj.select();
return document.selection.createRange().text;
}
//firefox
else if (window.navigator.userAgent.indexOf(‘Firefox‘) >= 1) {
if (obj.files) {
return obj.files.item(0).getAsDataURL();
}
return obj.value;
}
return obj.value;
}
}
});

</script>
<style type=‘text/css‘>
#container
{
position: absolute;
left: 40px;
background: #FFF;
border: #666 2px solid;
border-radius: 10px;
width: 600px;
height: 500px;
padding: 20px;
}

#selectdiv
{
width: 350px;
height: 550px;
float: left;
}

#uploaddiv
{
margin-top: 20px;
border-top: #CCC 1px solid;
}

#prediv200
{
height: 200px;
width: 200px;
overflow: hidden;
border: #CCC 3px dashed;
}

#prediv100
{
height: 100px;
width: 100px;
overflow: hidden;
border: #CCC 3px dashed;
}

#preview
{
position: relative;
overflow: hidden;
}

[type=button]
{
width: 50px;
}
</style>
</head>
<body>
<div>
<div id=‘container‘>

<div id=‘selectdiv‘>
<img id=‘imgselect‘ src=‘~/Content/UploadImg/fdsfsdfsdfsd.jpg‘/>
<div>
<p>图片上传:<font color=‘red‘>*.gif,*.jpg,*.png,*.bmp</font></p>
@using (Html.BeginForm("img3Handler", "UpLoadImg", FormMethod.Post, new { Area="TestFunction"}))
{
<input type=‘file‘ name=‘imgFile‘ id=‘imgFile‘><br />
<br />
<input type=‘text‘ name=‘x1‘ id="x1" value=‘0‘ />
<input type=‘text‘ name=‘y1‘ id="y1" value=‘0‘ />
<input type=‘text‘ name=‘x2‘ id="x2" value=‘0‘ />
<input type=‘text‘ name=‘y2‘ id="y2" value=‘0‘ /><br />
<input type="text" name="src" id="src" value="~/Content/UploadImg/fdsfsdfsdfsd.jpg" />
<input type="submit" value=‘上传‘ id=‘upload‘ />
}
</div>
</div>
<div id=‘prediv200‘>
<img id=‘preview200‘ src=‘~/Content/UploadImg/fdsfsdfsdfsd.jpg‘ width=‘200px‘ height=‘200px‘ />
</div>
<div id=‘prediv100‘>
<img id=‘preview100‘ src=‘~/Content/UploadImg/fdsfsdfsdfsd.jpg‘ width=‘100px‘ height=‘100px‘ />
</div>
<div>
<form>
@* <input type=‘hidden‘ name=‘x1‘ value=‘0‘ />
<input type=‘hidden‘ name=‘y1‘ value=‘0‘ />
<input type=‘hidden‘ name=‘width‘ value=‘100‘ />
<input type=‘hidden‘ name=‘height‘ value=‘100‘ />
<br />
<br />*@
<input type=‘button‘ value=‘修改‘ id=‘button2‘ />
</form>
</div>
@if (ViewData["success"] != null)
{
<script type="text/javascript">
$(function () {
$(".success").slideDown();
$("#ok").slideUp();
});
</script>
<div style="display: none;position:absolute;top:200px;left:200px;z-index:1000;" class="success">
上传成功
<input type="button" id="ok" value="确定" />
</div>
}
else
{
<span>上传失败</span>
}
</div>
</div>
</body>
</html>

后台:

public ActionResult img3Handler(FormCollection forms)
{
int x1 = Convert.ToInt32(forms["x1"]);
int y1 = Convert.ToInt32(forms["y1"]);
int x2 = Convert.ToInt32(forms["x2"]);//实际上是没有用的
int y2 = Convert.ToInt32(forms["y2"]);//实际上是没有用得
string src = forms["src"];
string Path = HttpContext.Server.MapPath(src);//实际路径
//创建图象,保存将来截取的图象
//Bitmap image = new Bitmap(Path);
//Graphics imgGraphics = Graphics.FromImage(image);
//设置截屏区域
//imgGraphics.CopyFromScreen(x1, y1, x2, y2, new Size(100, 100));
//保存
//SaveImage(image);
string[] fileName = src.Split(‘.‘);
//string file = fileName[0]+fileName[1] + "caijinhao." + fileName[2];
string folders = HttpContext.Server.MapPath("~/Content/UploadImg/");
//image.Save(folders+"caijinhao3."+fileName[1]);
string newpath= CutImage(Path, x1, y1, x2, y2, Guid.NewGuid().ToString("N"), folders,fileName[1]);
ViewData["success"] = "true";
return View("img3");
}
/// <summary>
/// 截取图片方法
/// </summary>
/// <param name="url">图片地址</param>
/// <param name="beginX">开始位置-X</param>
/// <param name="beginY">开始位置-Y</param>
/// <param name="getX">截取宽度</param>
/// <param name="getY">截取长度</param>
/// <param name="fileName">文件名称</param>
/// <param name="savePath">保存路径</param>
/// <param name="fileExt">后缀名</param>
public string CutImage(string url, int beginX, int beginY, int getX, int getY, string fileName, string savePath, string fileExt)
{
//if ((beginX < getX) && (beginY < getY))
//{
Bitmap bitmap = new Bitmap(url);//原图
//if (((beginX + getX) <= bitmap.Width) && ((beginY + getY) <= bitmap.Height))
//{
// Bitmap destBitmap = new Bitmap(getX, getY);//目标图 创建新图大小
Bitmap destBitmap = new Bitmap(100, 100);//要存储的图像的大小
Rectangle destRect = new Rectangle(0, 0, getX, getY);//我要在新图的开始画图的位置
Rectangle srcRect = new Rectangle(beginX, beginY, getX, getY);//我要在原图的这个位置复制
Graphics imgGraphics = Graphics.FromImage(destBitmap);
imgGraphics.DrawImage(bitmap, destRect, srcRect, GraphicsUnit.Pixel);
ImageFormat format = ImageFormat.Png;
switch (fileExt.ToLower())
{
case "png": format = ImageFormat.Png; break;
case "bmp": format = ImageFormat.Bmp; break;
case "gif": format = ImageFormat.Gif; break;
}
destBitmap.Save(savePath + "//" + fileName+"."+fileExt,format);
return savePath + "\\" + "*" + fileName.Split(‘.‘)[0] + "." + fileExt;
//}
//else
//{ return "截取范围超出图片范围"; }
//}
//else
//{ return "请确认(beginX < getX)&&(beginY < getY)"; }
}

时间: 2024-07-30 17:50:55

截图上传功能 imageAreaselect的相关文章

[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能

很久没有更新博客了,再不写点东西都烂了. 这次更新一个小内容,是两个插件的组合使用,实现头像上传功能. 业务需求: 头像上传功能,要对上传的文件进行剪切,且保证头像到服务器时必须是正方形的. 优化<input type="file">的显示样式,基础的样式实在太难看了. 上传的头像需要进行质量压缩跟大小裁剪,以减缓浏览器的压力. 成果预览: 使用到的技术插件 Jcrop:用于前端"裁剪"图片 bootstrap-fileinput:用于前端优化上传控件样

django下的ckeditor 5.0 文本编辑器上传功能。

完整的后台界面怎么可以没有文本编辑器,但是django的admin界面很疑惑,没有自带文本编辑器,好在网上有不少成型的库可以用 我用的是ckeditor编辑器,安装和配置我引用别人的博客 这篇博客配置讲的很详细,之后就可以用RichTextField来定义模型,后台默认就是文本编辑器. 但是问题来了,文本编辑器是没有上传图片的功能,只能贴链接. 网上以前有两篇博客也是讲上传的,一篇是java web,一篇是django的 django的链接在这里 django下ckeditor上传图片的实现 j

【Bootstrap-插件使用】Jcrop+fileinput组合实现头像上传功能

作者:Dreawer链接:https://zhuanlan.zhihu.com/p/24465742来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者:梦游的龙猫(转载已获得作者许可) 很久没有更新博客了,再不写点东西都烂了. 这次更新一个小内容,是两个插件的组合使用,实现头像上传功能. 业务需求: 头像上传功能,要对上传的文件进行剪切,且保证头像到服务器时必须是正方形的. 优化<input type="file">的显示样式,基础的样式实

头像截图上传三种方式之一(一个简单易用的flash插件)(asp.net版本)

flash中有版权声明,不适合商业开发.这是官网地址:http://www.hdfu.net/ 本文参考了http://blog.csdn.net/yafei450225664/article/details/12855915     并且加入了自己的解析,以供之后的参考. 官网提供的demo包,包含了php,jsp,asp,aspx的demo. 1.Demo中,avatar.swf是执行上传的flash文件:default.jpg是默认显示的图片:demo.html是demo,可以直接复制里面

struts2中实现文件上传功能

在web项目中,文件上传.头像上传这样的功能经常是要用到的,下面就以在struts2中实现文件上传功能为例子,简单地理一下文件上传功能的编码思路. 项目目录结构 项目源代码 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:x

使用Commons FileUpLoad组件实现文件上传功能

Commons 是Apache开放的源码组织的一个java子项目,该项目主要涉及一些开发中常用的模块,如文件上传,命令行处理,数据库连接池等.FileUpLoad就是其中的一个用于处理HTTP文件上传的子项目.Commons FileUpLoad组建具有以下几个特点: 1.使用简单:Commons FileUpLoad组件可以方便的嵌入JSP文件中,在JSP文件中仅编写少量代码就可完成文件上传功能,十分方便. 2.能够全程控制上传的内容:使用Commons FileUpLoad组件提供的对象及操

HTML 5 File API:文件拖放上传功能

即将到来的 html5 规范有几个特性,以致使 HTML 远远超出其本身作为一种标记语言的能力,并为 Web 开发者提供了一些强大的脚本工具.负责监督 HTML5 发展进程的 W3C 组织,刚刚出版了一份强有力的规格草案 – HTML5 File API 接口功能. 该 API 的设计初衷,是改善基于浏览器的 Web 应用程序处理文件上传的方式,使文件直接拖放上传成为可能.草案定义了新的输入选项 <input type=”file”> 来处理文件上传. 更为惊喜的是,该 API 为开发者提供了

nodejs 实现简单的文件上传功能

首先需要大家看一下目录结构,然后开始一点开始我们的小demo. 文件上传总计分为三种方式: 1.通过flash,activeX等第三方插件实现文件上传功能. 2.通过html的form标签实现文件上传功能,优点:浏览器兼容好. 3.通过xhr level2的异步请求,可以百度formData对象. 这里使用2做个练习. node插件请看下package.json文件 { "name": "upload", "version": "0.1

配置php.ini实现PHP文件上传功能

本文介绍了如何配置php.ini实现PHP文件上传功能.其中涉及到php.ini配置文件中的upload_tmp_dir.upload_max_filesize.post_max_size等选项,这些选项是文件上传成败的关键.我们以php.5.3.5的Windows版本为例说明. php.ini中文件上传功能配置选项说明 用文本工具(推荐EditPlus)打开php.ini 配置文件,查找 File Uploads ,在这个区域有以下3个选项: file_uploads = On 是否允许HTT