用jquery插件的图片剪切上传功能

   为了使用户能自定义个人头像,需要提供一个对上传图片的截图功能,当前很多网站特别是SNS类网站都提供这样的功能,非常实用。主要实现的形式有两种,一种是flash截图,另一种就是javascript截图,两种方法各有秋千,关于Flash截图可以参考一下UcHome程序中头像上传功能,但这不是我要讨论的话题,我这里主要是如何实现javascript截图,利用jQuery的imgAreaSelect插件,轻松实现自定义头像[avatar]javascript截图功能

首先,利用的是jquery上传剪切插件imgAreaSelect
官方下载地址:http://odyniec.net/projects/imgareaselect/ 
加压后里面有两个js文件
一个是jquery.min.js 另一个是 jquery.imgareaselect.js
将这两个js文件引入到项目中去

其次,在文件中要加入javascript代码

//预览显示
function preview(img, selection){ 
var scaleX = 100 / (selection.width || 1); 
var scaleY = 100 / (selection.height || 1); 

//动态小头像 获取当前选中框的宽度,高度,左边框,右边框 
$('#view').css({ //view是预览图像的id
width: Math.round(scaleX * 300) + 'px', 
height: Math.round(scaleY * 220) + 'px', 
marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px', 
marginTop: '-' + Math.round(scaleY * selection.y1) + 'px' 
}); 

//加载小头像 
$(document).ready(function () { 
$('<div><img id="view" src="bee.jpg" style="position: relative;" /></div>') 
.css({ 
float: 'left', 
position: 'relative', 
overflow: 'hidden', 
width: '100px', 
height: '100px' 
}) 
.insertAfter('#biuuu'); //把新建元素放到 #biuuu 之后
//.insertAfter($('#biuuu')); //把新建元素放到 #biuuu 之后
}); 

//初始化加载 
$(window).load(function () { 
$('#biuuu').imgAreaSelect({ 
aspectRatio: '1:1', //截取比例
//show:true,
//resizable:false, //是否可调整大小
autoHide: false,//选择框选择完毕是否自己取消 
key:true, //是否启用键盘,默认为false
//x1: 75, y1: 30, x2: 225, y2: 180, //需要处理的区域,原始的
//x1:左上角x轴坐标 y1:左上角y轴坐标 x2:右下角x轴坐标 y2:右下角y轴坐标
keys: { arrows: 1, ctrl: 5, shift: 'resize' }, //调整像素大小

//onInit: function(img, selection) { ias.setSelection(100, 50, 250, 150, true); ias.update(); }, //设置初始函数 画出选择框 
onSelectChange: preview , //选框移动时触发的事件
onSelectEnd: getLocation //选框结束时触发的事件

});
});

上述的详细参数配置在官网上也有,自己去查阅

最后,在文件中使用
<div>
<img id="biuuu" src="bee.jpg" title="biuuu" width="320px" height="220px" style="float: left; margin-right: 10px;"/> 
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</div>

说明:1.利用插件很容易做出来剪切预览效果,可是让我纠结了半天是:生成的预览图如何上传呀,在网上找了一段代码,发现只要是上传图片的大小不同,那么生成的图也不同,后来想想是缩放比例的问题。也就是说要实际图像的大小和在页面显示的大小是不一样的,被缩放了,那么在后台上传剪切图像的时候,我们必须要还原原来图像的大小,并把要剪切的部分也相应的要放大或缩小
代码:
System.Drawing.Image sourceImage = System.Drawing.Image.FromFile(Server.MapPath("bee.jpg"));
int height = Convert.ToInt32(sourceImage.Height);//获取原始图像的高
int width = Convert.ToInt32(sourceImage.Width);//获取原始图像的宽度

x1 = x1*(width/320);//根据实际尺寸缩放
x2 = x2*(width/320);

y1 = y1*(height/240);
y2 = y2*(height/240);

时间: 2024-11-08 20:10:02

用jquery插件的图片剪切上传功能的相关文章

jquery插件ajaxupload实现文件上传操作_jquery

本文实例讲述了jquery插件ajaxupload实现文件上传操作代码.分享给大家供大家参考.具体如下: 运行效果截图如下: 图1 文件上传前 图2 文件上传后 具体代码如下: 1.创建页面并编写HTML 上传文档:  <div class="uploadFile"> <span id="doc"><input type="text" disabled="disabled" /></s

asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)_jquery

本文实例讲述了asp.net+jquery.form实现图片异步上传的方法.分享给大家供大家参考,具体如下: 首先我们需要做准备工作: jquery 点击此处本站下载. jquery.form.js 点击此处本站下载. 页面JqueryFormTest.aspx: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="JqueryFormTest.aspx.cs" Inherits=

JQuery插件ajaxfileupload.js异步上传文件实例

这篇文章主要介绍了JQuery插件ajaxfileupload.js异步上传文件实例,本文直接给出了HTML代码和JS代码以及后台处理代码,需要的朋友可以参考下     在服务器端做文件上传的过程中,如果使用web服务器短端的上传控件去上传文件的话,会导致页面刷新一次,这样对用户的体验就不是很友好了.ajaxfileupload.js是一款jQuery的异步上传文件插件,使用简单且容易上手. 前置条件:ajaxfileupload.js文件,百度下载一个就行. JS引用:  代码如下: <scr

PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例_php实例

平时用的比较多的JQuery图片上传插件是Uploadify这个插件,效果很不错,但是由于手机不支持flash,所以不得不再找一个文件上传插件来用了.后来发现ajaxFileUpload这个插件挺不错,所以就用这个插件来做异步上传文件的效果.网上也有很多对ajaxFileUpload插件的使用的文章,不过我发现没有PHP版,所以这次服务器那边的处理就使用PHP语言来处理. 一.详解ajaxFileUpload插件的语法参数 原理:ajaxfileupload是通过监听iframe的onload方

HTML5实现图片压缩上传功能

上篇文章中提到移动端上传图片,我们知道现在流量还是挺贵的,手机的像素是越来越高,拍个照动不动就是好几M,伤不起.虽然客户端可以轻轻松松实现图片压缩再上传,但是我们的应用还可能在浏览器里面打开,怎么办呢,图片压缩.受以前PC上的开发思维影响,尼玛js哪有权限去操作文件,哪有资格压缩图片啊,搞不了,你们客户端去整吧.只能说自己还是有些井底之蛙了.在HTML5的影响下,前端能干的事情越来越多了,开发的功能逼格也越来越高了,H5万岁!前端的魅力也在这,过去不可能的并不意味现在.以后不可能,努力吧,骚年!

jQuery插件ajaxfileupload.js实现上传文件_jquery

AjaxUpLoad.js的使用实现无刷新文件上传,如图 1.创建页面并编写HTML上传文档:  <div class="uploadFile"> <span id="doc"><input type="text" disabled="disabled" /></span> <input type="hidden" id="hidFileNam

jQuery插件ajaxFileUpload实现异步上传文件效果_jquery

ajaxFileUpload是一个异步上传文件的jQuery插件. 传一个不知道什么版本的上来,以后不用到处找了. 语法:$.ajaxFileUpload([options]) options参数说明: 1.url   上传处理程序地址. 2,fileElementId   需要上传的文件域的ID,即<input type="file">的ID. 3,secureuri 是否启用安全提交,默认为false. 4,dataType 服务器返回的数据类型.可以为xml,scri

jQuery插件WebUploader实现文件上传_jquery

最近在项目中用到了百度的文件图片上传插件WebUploader,分享给大家. WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用原来的FLASH运行时,兼容IE6+,iOS 6+, android 4+.两套运行时,同样的调用方式,可供用户任意选用. 采用大文件分片并发上传,极大的提高了文件上传效率. 需要在http://fex.baidu

JQuery插件ajaxfileupload.js异步上传文件实例_jquery

在服务器端做文件上传的过程中,如果使用web服务器短端的上传控件去上传文件的话,会导致页面刷新一次,这样对用户的体验就不是很友好了.ajaxfileupload.js是一款jQuery的异步上传文件插件,使用简单且容易上手. 前置条件:ajaxfileupload.js文件,百度下载一个就行. JS引用: 复制代码 代码如下: <script src="/Content/JQueryJS/jquery-2.1.1.js"></script> <script