微博图片放大、缩小、旋转

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>微薄中的图片放大/缩小/旋转功能 下载demo</title>
<style>
/*rentj1@163.com*/
ul,li,h3,h1,h4,p{ margin:0; padding:0; list-style:none; font-weight:normal;}
body{ font-size:12px; color:#333;}
a{ text-decoration:none; color:#6191D4;}
a:hover{ text-decoration:underline; color:#f00}
.current{  color:#f00}
img{ vertical-align:bottom}

.list-item{ padding:10px 5px 5px 5px; width:640px; border-top:1px solid #efefef; overflow:hidden}
.list-item .logo{ float:left; padding-top:5px; }
.list-item .content{ /*margin-left:160px;*/ }
.list-item .textarea{ padding:5px 0; font-size:14px; }
.list-item .textarea h4{ margin-bottom:5px; }

.pic{ overflow:hidden; min-height:60px;  background:url(http://xoyozo.me/tool/loading/images/loading23.gif) no-repeat left center; }
.pic img{  padding:1px; border:1px solid #ccc; }

.pic-big{ display:none; background-color:#fbfbfb; float:left; border:1px solid #E1E4E5;  padding: 15px 20px 13px; }
.pic-big .title{ line-height:20px; }
.pic-big .title .retract,
.pic-big .title .trun-left,
.pic-big .title .trun-right{ background:url("http://img.t.sinajs.cn/t4/style/images/common/ico.png?id=1347441496757") no-repeat 0 -1977px transparent; padding-left:12px;}
.pic-big .title .trun-left{ background-position: 0 -937px; }
.pic-big .title .trun-right{  background-position: 0 -966px; }

.pic-small { min-width:60px; float:left; text-align:center; background-color:#ccc;  cursor: url("http://img.t.sinajs.cn/t4/style/images/common/big.cur"),auto;  }
.pic-big img,
.pic-big canvas{ cursor: url("http://img.t.sinajs.cn/t4/style/images/common/small.cur"), auto; }
</style>
</head>

<body>
<!-- rentj1@163.com -->
<div class="list-item">
    <div class="content">
	<div class="textarea">

        <p><a href="http://j.union.ijinshan.com/jump.php?u_key=81216" target="_blank">PPTV行业首将推iPad、iPhone直播回放功能</a></p>
    </div>
    <div class="pic" id="pic">
        <div class="pic-small" data-action="bigImage">
            <img src="http://ww2.sinaimg.cn/thumbnail/7cae8267gw1dxvrytqvagj.jpg" data-action="bigImage" />
        </div>
        <div class="pic-big">
            
        </div>
    </div>
    </div>
</div>
 
<script>
//rentj1@163.com
var dom = {
	
	get: function(id){
		return document.getElementById(id);
	}

}

function picHandle(e){
	var e = e || window.event,
	
		target = e.target || e.srcElement,
	
		self = this,
		
		settings = {
			width: 420,
			"pic-small": self.children[0],
			"pic-big": self.children[1]
		},
		

		control = {
		
			//查看大图
			bigImage: function(){
				if( !self.rid ){
					this.create();
					return;
				}
				settings["pic-small"].style.display = "none";
				settings["pic-big"].style.display = "block";
			},
			
			getBigImgSrc: function(){
				return (target.tagName !== "IMG" ? target.children[0] : target).src.replace("/thumbnail/", "/bmiddle/");
			},
			
			create: function(callback){
				var image = document.createElement("img");
				var src = this.getBigImgSrc();
				settings["pic-small"].style.display = "none";
				settings["pic-big"].style.display = "none"
				image.onload = function(){
					if(self.rid )return; 
					
					var width = this.width;
					if(width > settings.width){
						width = settings.width;
					}
					self.rid = +(new Date());
					settings["pic-big"].innerHTML = '<div class="title">'+ 
													'<a href="javascript: void(0)" data-action="smallImage" class="retract">收起</a> ' +
													'<a href="javascript: void(0)" data-action="trunLeft" class="trun-left">左转</a> ' +
													'<a href="javascript: void(0)" data-action="trunRight"  class="trun-right">右转</a>' +
												 '</div>'+
												 '<a style="display:block"><img data-action="smallImage" src="' + src + '" width="' + width + '" id="img_'+ self.rid +'" data-rotate="0"></a>';

					settings["pic-big"].style.display = "block";
				};
				image.src = src;
				
			},
			
			//查看小图
			smallImage: function(){
				settings["pic-small"].style.display = "block";
				settings["pic-big"].style.display = "none";
			},
			
			//获取当前旋转值
			getRotate: function() {
				var image = dom.get("img_" + self.rid);
				return Number(image.getAttribute("data-rotate")) || 0;			
			},
			
			trunRight: function(){
				var r = this.getRotate();
				r++
				if(r>3) r = 0;
				this.rotate(r);			
			},
			
			trunLeft: function(){
				var r = this.getRotate();
				r--;
				if(r<0) r = 3;
				this.rotate(r);
			},
	
			rotate: document.body.filters ? 
				
				//ie 滤镜旋转
				function(r){ 
				
					var img = dom.get("img_" + self.rid);
					var parent = img.parentNode;
					img.style.width = "auto";
					img.style.height = "auto"; 
					img.style.position = "absolute"
					img.style.top = "-1000px"; 
					parent.style.position ="relative";
					
					switch (r) {
						 case 1:
						 case 3:
							if(img.height > settings.width){ 
								img.style.height = settings.width; 
							}
							
							parent.style.height = img.width;
							parent.style.width = img.height;
							break;
							
						 case 0:
						 case 2:
							if(img.width > settings.width){ 
								img.style.width = settings.width; 
							}
							parent.style.width = img.width;
							parent.style.height = img.height;
							break;
					 }
					
					img.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(rotation='+ r +')';
					img.style.top = "0px";
					img.setAttribute("data-rotate", r );
				} 
				
				:
				
				//canvas旋转
				function(r){
					var canvas = dom.get("canvas_" + self.rid) || document.createElement("canvas"),
						context = canvas.getContext("2d"),
						img = dom.get("img_" + self.rid),
						x = 0, y = 0;
						
					canvas.setAttribute("data-action","smallImage");
					canvas.id = "canvas_" + self.rid;
					img.style.position = "absolute";
					img.style.visibility = "hidden";
					
					switch (r) {
						 case 0:
							canvas.width = img.width;
							canvas.height = img.height;
							x =0; y = 0;
							break;
						 case 1:
							canvas.width = img.height;
							canvas.height = img.width;	
							x = 0; y = -img.height;
							break;							
						 case 2:
							canvas.width = img.width;
							canvas.height = img.height;
							x = -img.width; y = -img.height;
							break;							
						 case 3:
							canvas.width = img.height;
							canvas.height = img.width;
							x = -img.width; y = 0;
							break;
					}
					if(canvas.width > settings.width ){ 
						canvas.style.width = settings.width + "px" 
					}else {
						canvas.style = "";
					}
					context.clearRect(0, 0, img.width, img.height);
					context.save();
					context.rotate(r * 90 * Math.PI / 180);
					context.drawImage(img, x, y)
					context.restore();
					img.parentNode.appendChild(canvas);
					img.setAttribute("data-rotate", r );
			}
		},
	
		action = target.getAttribute("data-action");
	
	control[action] && control[action]();
	
}

var itemPic = dom.get("pic");
itemPic.onclick = picHandle;
</script>
</body>
</html>


转自:http://www.cnblogs.com/rentj1/archive/2012/10/13/2722124.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现图片放大缩小旋转功能,可以使用HTML5的canvas和JavaScript来实现。以下是一个简单的示例代码: HTML部分: ```html <canvas id="myCanvas"></canvas> ``` JavaScript部分: ```javascript var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d"); // 创建一个图片对象 var img = new Image(); img.src = "image.jpg"; // 等待图片加载完成后再进行绘制 img.onload = function() { // 绘制图片 ctx.drawImage(img, 0, 0, canvas.width, canvas.height); }; // 定义变量用于存储图片的缩放比例和旋转角度 var scale = 1; var angle = 0; // 定义函数用于改变缩放比例和旋转角度 function zoomIn() { scale += 0.1; drawImage(); } function zoomOut() { scale -= 0.1; drawImage(); } function rotateLeft() { angle -= Math.PI / 6; drawImage(); } function rotateRight() { angle += Math.PI / 6; drawImage(); } // 定义函数用于绘制图片 function drawImage() { ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.save(); ctx.translate(canvas.width / 2, canvas.height / 2); ctx.rotate(angle); ctx.scale(scale, scale); ctx.drawImage(img, -img.width / 2, -img.height / 2); ctx.restore(); } // 绑定按钮的点击事件 document.getElementById("zoom-in").addEventListener("click", zoomIn); document.getElementById("zoom-out").addEventListener("click", zoomOut); document.getElementById("rotate-left").addEventListener("click", rotateLeft); document.getElementById("rotate-right").addEventListener("click", rotateRight); ``` 在上面的代码中,我们首先创建了一个canvas元素,并获取了它的上下文对象ctx。然后,我们创建了一个Image对象img,并设置它的src属性为要加载的图片的URL。我们在img的onload事件中绘制了图片。然后,我们定义了四个函数用于改变缩放比例和旋转角度,以及一个drawImage函数用于绘制图片。在drawImage函数中,我们使用了canvas的变换函数translate、rotate和scale来实现图片的缩放和旋转。 最后,我们绑定了四个按钮的点击事件,分别调用对应的函数来改变缩放比例和旋转角度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值