mimi

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta content="initial-scale=1.0,maximum-scale=1.0,width=device-width" name="viewport">
<title>Document</title>
</head>
<body>

<style>

*
{
margin:0;
padding:0;
}
.content{
position:relative;
background:yellow;

}
.img
{

}
.selectContainer
{
position: absolute;
border:1px solid rgba(255,255,255,0.5);
border-radius: 50%;
}
#info
{
height:50px;
}
</style>

<div id="info"></div>
<input type="file" accept="image/*" id="selectFile" />
<div class="content" id="content">

<img alt="选择图片" class="img" id="selectImg"/>
<div class="selectContainer"></div>

</div>
<canvas id="canvas"> </canvas>

<script type="text/javascript" src="js/touch.min.js"></script>
<script type="text/javascript" src="js/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="js/hijs.js"></script>

<script>
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
canvas.width = 200;
canvas.height = 200;

var sWidth = document.documentElement.clientWidth;
var sHeight = document.documentElement.clientHeight;
var imgLength =200;
var selectLength = 100;
var cssScale = "";
var cssTransform = "";
var orignImage =new Image();
var height ;
var width ;
var orignHeight;
var orignWidth;
var maxHeight;
var maxWidth;
var maxScal;
var minScal;
var maxOffx;
var maxOffY;
var offx ;
var offy ;
var cutX;
var cutY;
var currentScale=1;
var target = document.getElementById("selectImg");
$("#selectFile").change(function(){

var file = this.files[0];
var fileReader = new FileReader();
fileReader.readAsDataURL(file);

fileReader.onload=function(){
orignImage.src=this.result;
orignHeight =height = orignImage.height;
orignWidth = width = orignImage.width;
if(height>imgLength&&width>imgLength)
{
if(height>width)
{
width = imgLength/height*width;
height = imgLength;
}
else
{
height=imgLength/width*height;
width = imgLength;
}

}else if(height>imgLength&&width<=imgLength)
{
width = imgLength/height*width;
height= imgLength;
}
else if(height<=imgLength&&width>imgLength)
{
height = imgLength/width*height;
width=imgLength;
}

$(".img").attr("src",this.result);
$(".img").width(width).height(height);
$(".img").css("margin","0 auto");
$(".img").css("display","block");
var selectBoderleft= (sWidth - selectLength)/2+"px";
var selectBoderTop = (height-selectLength)/2+"px";
$(".selectContainer").height(selectLength-2);
$(".selectContainer").width(selectLength-2);
$(".selectContainer").css("top",selectBoderTop);
$(".selectContainer").css("left",selectBoderleft);
maxScal=sWidth/imgLength;
minScal=selectLength/width;
maxOffx =(target.offsetWidth - selectLength)/2;
maxOffY =(target.offsetHeight - selectLength)/2;
$("#info").html("Y:"+target.offsetHeight);

}

})

$(function() { //放大缩小

target.style.webkitTransition = ‘all ease 0.05s‘;
touch.on(‘#content‘, ‘touchstart‘, function(ev) {
ev.preventDefault();
});
var initialScale = 1;

touch.on(‘#content‘, ‘pinchend‘, function(ev) {
currentScale = ev.scale - 1;
currentScale = initialScale + currentScale;
currentScale = currentScale > maxScal ? maxScal : currentScale; //自己调节可以放大的最大倍数
currentScale = currentScale < minScal ? minScal : currentScale; //自己调节可以缩小的最小倍数
cssScale = ‘scale(‘ + currentScale + ‘)‘
target.style.webkitTransform = cssTransform+cssScale;
initialScale = currentScale;
maxOffx =(target.offsetWidth*currentScale - selectLength)/2;
maxOffY =(target.offsetHeight*currentScale - selectLength)/2;

});

});

$(function() {

touch.on(‘#selectImg‘, ‘touchstart‘, function(ev) {
ev.preventDefault();
});

var dx, dy;
touch.on(‘#selectImg‘, ‘drag‘, function(ev) {
dx = dx || 0;
dy = dy || 0;
offx = dx + ev.x ;
offy = dy + ev.y ;

if(offy>maxOffY)
{
offy=maxOffY
}
if(offy<-maxOffY)
{
offy=-maxOffY;
}
if(offx>maxOffx)
{
offx=maxOffx
}
if(offx<-maxOffx)
{
offx=-maxOffx;
}

cssTransform = "translate3d(" + offx + "px," + offy + "px,0)";

this.style.webkitTransform = cssTransform + cssScale;

cutX = ((width*currentScale- selectLength)/2-offx)*orignWidth/width;
cutY =((height*currentScale- selectLength)/2-offy)*orignHeight/height;
selectWidth = selectLength/currentScale;
selectHeight =selectLength/currentScale;
console.log(currentScale, target,cutX,cutY,selectWidth,selectHeight);
context.drawImage(orignImage,cutX,cutY,orignWidth*selectLength/currentScale/width,orignHeight*selectLength/currentScale/height,0,0,canvas.width,canvas.height);

$("#info").html("cux="+cutX +" cutY="+cutY);

});
touch.on(‘#selectImg‘, ‘dragend‘, function(ev) {
dx += ev.x;
dy += ev.y;

});
})

</script>

</body>
</html>

时间: 2024-10-12 13:11:51

mimi的相关文章

上传时excel类型accept的MIMI类型

1.excel文件类型 accept='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel' 2.zip文件类型 accept='.zip' 通过文件的type属性比较 file.type === 'application/x-zip-compressed' 原文地址:https://www.cnblogs.com/heroljy/p/9875897.html

javascript创建对象

以下的方式主要是为了避免忘记写new而封装的方法: //先创建函数 Object.beget = function (o) { var F = function (o) {}; F.prototype = o ; return new F; }; //定义好模板对象 var Cat = { name:'', saying:'meow' }; //从模板对象中创建一个对象 var myCat = Object.beget(Cat); //对象生成后,可以自行对相关属性进行赋值: myCat.nam

jsp笔记总结

第一章 JavaWeb简介 1.什么是Web应用程序 什么是Web应用程序是一种通过Web访问的应用程序.Web应用程序一个最大优点就是用户很容易访问.用户只需要有浏览器即可,不需要再安装其他软件.Web开发是目前软件开发领域的三大方向之一.(桌面应用程序,Web应用程序,嵌入式应用程序) 2.静态页面与动态页面 静态网页 表现形式:网页内容固定,不会更新. 所需技术:HTML,CSS 动态网页 表现形式:网页中的内容通过程序动态的显示,自动更新,能与用户进行交互(比如登录输入正确用户名和密码时

J2EE规范

J2EE是由SUN提出的用于简化开发企业级应用程序的一系列规范的组合,J2EE基于中间层集成的框架的方式为应用开发提供了一个统一的开发平台.基于容器管理.组件化的模型为企业建立一个高可用性,高可靠性可扩展的应用平台提供支持,降低了开发分布式应用程序的难度,降低了开发成本,而且提供一整套方便与旧的遗留系统相集的强有力支持,并提供了安全性及规范的打包安装的支持.开发人员使用的J2EE规范开发的应用程序将受厂商及客户的支持. J2EE是由一整套服务,应用程序接口及协议构成,提供对开发多层Web程序应用

J2SE Base-4

方法重载  overload void max(int a, int b){} void max(float a, float b){} TestOverLoad.java 对象的创建与使用 TestCircle.java stack    heap this关键字 static关键字 Cat.java stack : 局部变量  Cat mimi heap: id name  data seg : (static) sid Exercise:控制台 学生管理系统 主界面 输入. 输出 需求文档

如何将类序列化并直接存储入数据库

参考代码1 可以使用.net提供的序列化和反序列化方法来实现,你可将对象序列化成XML字符串,然后存入数据库中,当你要使用对象的时候,再把数据库中保存字符串反序列化成对象就可以使用了,以下为示例代码: public class Cat { public string Color { get; set; } public int Speed { get; set; } public string Name{ get; set; } } //序列化 var cat1=new Cat{Color="W

[摘译] 操纵关节式物体的反向动力学和几何约束

原文: INVERSE KINEMATICS AND GEOMETRIC CONSTRAINTS FOR ARTICULATED FIGURE MANIPULATION http://graphics.ucsd.edu/courses/cse169_w04/welman.pdf 译者: crazii http://www.cnblogs.com/crazii/p/4662199.html [译者: 根据个人需要, 只仔细阅读了部分内容, 所以只翻译 基本概念(3.1)和 CCD相关(4.2, 4

JAVA遇见HTML——JSP篇

1.手工编写第一个WEB应用程序 2.默认访问服务器网页首页欢迎界面是 index.jsp,就是网页链接访问其所在的文件夹目录,不访问这个文件,也会自动访问的.如果这个文件夹目录下没有index.jsp或者有其他的比如 xx.jsp 链接直接访问这个 xx.jsp 也是没有用.换句话说,默认首页欢迎界面 就是 index.jsp 然后如果要修改默认首页欢迎界面,方法如下:打开这个web.xml文件,然后添加以下代码: 1 <welcome-file-list> 2 <welcome-fi

J2SE之面向对象_重载_this_static_package_import_继承_访问控制

方法的重载 构造方法重载 对象的创建和使用 class Point { private double x; private double y; Point(double x1, double y1) { x = x1; y = y1; } public double getX() { return x; } public double getY() { return y; } public void setX(double i) { x = i; } public void setY(doubl