看到网上的图片裁切,很是有感觉,我自己基于jquery-ui,然后根据大家普遍接受的clip原理,实现的简单的预览
想整张图片,不知道怎么整上。
// JavaScript Document
var x;
var y;
var prex;
var prey;
$(document).ready(function(){
$("#layhandle").draggable({cursor:"move",containment:"#laycropper"});
$("#layhandle").resizable({ handles: 'n, e, s, w' });//调整为四个方向改变
document.onmousemove=getpos;
});
//获取有用坐标
function getpos(){
/*var x=$("#layhandle")[0].offsetWidth-$("#layhandle")[0].clientLeft;//包括边框
var y=$("#layhandle")[0].offsetHeight-$("#layhandle")[0].clientTop;*/
x=$("#layhandle")[0].clientWidth;//获取可见部分宽度,去掉border
y=$("#layhandle")[0].clientHeight;//获取可见部分高度,去掉border
var parentx=$("#layhandle")[0].offsetLeft;//获取距离父元素的宽
var parenty=$("#layhandle")[0].offsetTop;//获取距离父元素的高
//alert($("#layhandle")[0].parentNode.clientWidth);
/*
rect(top,right,bottom,left)
**/
var rtop=parenty;
var rright=parentx+x;
var rbottom=parenty+y;
var rleft=parentx;
var rectt="rect("+rtop+"px,"+rright+"px,"+rbottom+"px,"+rleft+"px)";
$("#laycropper img").css("clip",rectt);//利用clip功能实现切割
createview();
}
//生成一个按比例放大后的部分图像,显示在一个预览框里
function createview(){
var bili=2;
prex=$("#layhandle")[0].clientWidth;//获取可见部分宽度,去掉border
prey=$("#layhandle")[0].clientHeight;//获取可见部分高度,去掉border
var parentx=$("#layhandle")[0].offsetLeft;//获取距离父元素的宽
var parenty=$("#layhandle")[0].offsetTop;//获取距离父元素的高
var rtop=parenty*bili;
var rright=(parentx+x)*bili;
var rbottom=(parenty+y)*bili;
var rleft=parentx*bili;
var rectt="rect("+rtop+"px,"+rright+"px,"+rbottom+"px,"+rleft+"px)";
$("#preview img").css("clip",rectt);
}
代码很简单,使用的只是简单的操作,希望大家自己做拓展,这里只是简单的思路,我也再完善完善,让其更加自定义。
js拖放功能使用jquery-ui,用起来方便,但终究不是自己的,自己也从网上学习后,写了个简单的拖动脚本。
// JavaScript Document
var layerx;
var layery;
var i=0;
$(document).ready(function(){
$("#demo")[0].onmousedown=drag;//准备拖动
$("#demo")[0].onmousemove=dmove;//开始拖动
document.onmouseup=delmouse;//停止移动
});
function drag(event){
event=event||window.event;
stopBubble(event);
stopdefault(event);
i=1;
layerx=event.offsetX||event.layerX;
layery=event.offsetY||event.layerY;
}
function dmove(event){
event=event||window.event;
stopBubble(event);
stopdefault(event);
if(i==1){
$("#demo")[0].style.left=event.clientX-layerx+"px";
$("#demo")[0].style.top=event.clientY-layery+"px";
}
}
function delmouse(){
i=0;
}
//防止冒泡事件
function stopBubble(e){
if(e&&e.stopPropagation){
e.stopPropagation();
}
else{
window.event.cancelBubble=true;
}
}
//阻止浏览器默认行为
function stopdefault(e){
if(e&&e.preventDefault){
e.preventDefault();
}
else{
window.event.returnValue=false;//取消默认事件
}
}
缩放的原理也不难,在这就不发了。
分享到:
相关推荐
"jQuery图片裁切+PHP文件上传"方案就是解决此类问题的一个高效工具,它允许用户在前端预览并裁剪图片,然后通过PHP后端进行安全、稳定的文件上传。本文将深入探讨这一技术的实现原理和步骤。 一、jQuery图片裁切 ...
在图片裁切场景中,jQuery可以轻松地监听用户的裁剪操作,实时更新预览效果,并将裁剪参数发送到服务器。 ### 图片裁切原理 图片裁切通常涉及两个主要步骤:前端展示和后端处理。前端部分,利用HTML5的`<canvas>`...
"jquery头像预览裁切"是一个常见的需求,特别是在社交媒体、个人资料设置或者在线上传照片的应用场景中。这个主题涉及到jQuery库的使用,一个强大的JavaScript库,以及cropbox.js插件,它专门用于图像裁剪和预览功能...
这个“jQuery新浪微博头像裁切预览代码”是一个实现这一功能的示例,它仿照了新浪微博的头像裁剪功能,让用户在上传图片前可以预览并调整裁剪区域,确保最终裁剪出的图片满足需求。 jQuery是一个广泛使用的...
其他jQuery裁切插件 除了JQuery Cropper,还有其他一些jQuery图片裁切插件可供选择,如: - **jQuery.Jcrop**:轻量级且易于定制,但功能相对较少。 - **imgAreaSelect**:适用于简单裁切需求,支持Firefox、...
在本文中,我们将深入探讨如何使用jQuery实现一个类似于新浪微博的头像上传和裁切预览功能。这个功能在很多Web应用中都非常实用,允许用户在上传头像前进行裁剪,确保图片符合特定的尺寸和形状,比如圆形。我们将...
【标题】"jQuery新浪微博头像裁切预览效果源码"是基于JavaScript库jQuery实现的一个功能,主要用于在用户上传头像时提供一个类似新浪微博的图片裁剪与预览功能。这个功能可以让用户自由选择并调整图片中显示的部分,...
【标题】"15、jQuery新浪微博头像裁切预览代码"所指的是一段使用jQuery库实现的JavaScript代码,其主要功能是为用户提供类似新浪微博的头像裁剪与预览功能。在微博或者类似的社交网络平台中,用户通常需要上传个人...
jQuery UI 是一个强大的 JavaScript 库,它提供了丰富的交互组件,包括日期选择器、对话框、滑块等,当然也支持图片裁切功能。本文将深入探讨如何使用 jQuery UI 实现这一功能。 首先,我们需要理解 jQuery UI 的...
《jQuery实现的新浪微博头像裁切预览特效详解》 在网页开发中,用户上传头像并进行裁剪预览是一项常见的功能,特别是在社交媒体平台。本文将深入解析一个基于jQuery实现的新浪微博头像裁切预览特效源码,旨在帮助...
- 实时预览:前端可以提供即时的裁切预览,让用户在裁切前看到效果。 - 图片压缩:在上传前可以先压缩图片,减少传输时间和服务器存储空间。 7. **跨域问题**: - 如果前端和后端不在同一个域名下,需要设置CORS...
在这个过程中,jQuery主要用于前端的图片选择、预览和裁切操作。以下是一些关键的jQuery步骤: 1. **选择图片**:用户通过点击按钮或拖拽选择本地图片。jQuery监听这些事件,获取到选中的图片文件。 2. **预览图片...
在这个图片裁切功能中,jQuery将负责处理用户交互,如拖动、缩放等操作。 **CSS简介** CSS(Cascading Style Sheets)是用于描述HTML或XML(包括SVG、MathML等各种XML方言)文档样式的样式表语言。在这里,CSS将...
这个“jQuery UI实现图片裁切功能.zip”文件显然包含了一个使用jQuery UI来实现图片裁剪功能的示例或教程。图片裁剪在网页应用中很常见,比如用于上传头像或者编辑照片。下面我们将详细讨论如何利用jQuery UI来实现...
在图片裁切过程中,用户可能在前端预览图片,并通过拖动和调整来确定裁切区域。裁切参数(如左上角坐标、宽度和高度)会被发送回服务器,PHP根据这些参数裁切原始图片并保存裁切后的版本。返回的结果可以是裁切后的...