js 拖拽,按等比例放大,缩小,任意修改图片大小,保存到word中

<html>
  <head>
    <meta http-equiv="content-type" content="text/html;charset=gb2312;" />
    <title>拖拽,按等比例放大,缩小,任意修改图片大小</title>
    <meta name="Keywords" content="图片拖拽,图片扥等比缩放" />
    <meta name="Description" content="在页面上实现图片拖拽并可以随意调整图片大小。 但如果按住Ctrl键之后,当再调整图片大小的时候需要按照比例进行调整。" />
  </head>
  <body>
  	<style type="text/css">
			.chr{cursor:e-resize;}
			.cvr{cursor:s-resize;}
			.cner{cursor:ne-resize;}
			.cnwr{cursor:nw-resize;}
			.cdft{cursor:default;}
			.cmove{cursor:move;}
    </style>
    <input type="button" οnclick="javascript:makeWord();" value="导出页面到Word"> 
		<img src="f:\\xnh.jpg" alt="PS梦幻效果" style="width:300px;position:absolute;left:100;top:100px;" id="imgsrc" class="cdft" />
		<script type="text/javascript">
			var img=document.getElementById('imgsrc');
			var span=10;
			var isDrag=null;
			var isIE=!!document.all;
			var ox,oy,ex,ey,ow,oh,chrPosX=false,chrPosY=false;
			var percent=img.offsetHeight/img.offsetWidth;
			function mouseMove(e){
			  e=e||event;
			  var x=e.offsetX||e.layerX,y=e.offsetY||e.layerY,imgW=img.offsetWidth,imgH=img.offsetHeight;
			  if((x<=span&&y<=span)||(x>=imgW-span&&y>=imgH-span))img.className='cnwr';
			  else if((x<=span&&y>=imgH-span)||(y<=span&&x>=imgW-span))img.className='cner';
			  else if(x<=span||x>=imgW-span)img.className='chr';
			  else if(y<=span||y>=imgH-span)img.className='cvr';
			  else img.className='cdft';
			  
			}
			function mouseDown(e){
			  e=e||event;
			  ex=e.clientX;//保存当前鼠标X轴的坐标
			  ey=e.clientY;//保存当前鼠标y轴的坐标
			  ox=parseInt(img.style.left);
			  oy=parseFloat(img.style.top);
			  if(img.className=='cdft'){
			    isDrag=true;
			    img.className='cmove';
			  }
			  else{
			    isDrag=false;
			    oh=img.offsetHeight;//获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度
			    ow=img.offsetWidth;
			    var x=e.offsetX||e.layerX,y=e.offsetY||e.layerY;//相对容器的水平坐标,相对容器的垂直坐标
			    chrPosX=x<=span;
			    chrPosY=y<=span;
			    if(e.ctrlKey){//事件属性可返回一个布尔值,指示当事件发生时,Ctrl 键是否被按下并保持住
			       ow=oh/percent;//根据比例计算出宽度
			       img.style.width=ow;//更新图片宽度
			    }
			  }
			  if(isIE)img.setCapture();  
			  document.οnmοusemοve=mouseDownAndMove;
			  img.οnmοusemοve=null;
			  return false;
			}
			function mouseDownAndMove(e){
			  e=e||event;
			  if(isDrag===true){
			    img.style.left=ox+e.clientX-ex+'px';
			    img.style.top=oy+e.clientY-ey+'px';
			  }
			  else if(isDrag===false){
			    var x=e.clientX-ex,y=e.clientY-ey;
			    switch(img.className){
			      case 'chr':
			        x=chrPosX?-x:x;
			        y=e.ctrlKey?percent*x+oh:oh;
			        img.style.width=ow+x+'px';
			        img.style.height=y+'px';
			        if(chrPosX)img.style.left=ox-x+'px';
			        break;
			      case 'cvr':
			        y=chrPosY?-y:y;
			        x=e.ctrlKey?y/percent+ow:ow;
			        img.style.width=x+'px';
			        img.style.height=oh+y+'px';
			        if(chrPosY)img.style.top=oy-y+'px';
			        break;
			      case 'cnwr':
			      case 'cner':
			        x=chrPosX?-x:x;
			        if(e.ctrlKey){//按宽等比
			          y=e.ctrlKey?percent*x+oh:oh;
			          img.style.width=ow+x+'px';
			          img.style.height=y+'px';
			          if(chrPosX)img.style.left=ox-x+'px';
			        }
			        else{          
			          y=chrPosY?-y:y;
			          img.style.width=ow+x+'px';
			          img.style.height=oh+y+'px';
			          if(chrPosX)img.style.left=ox-x+'px';
			          if(chrPosY)img.style.top=oy-y+'px';
			        }
			        break;
			    }
			  }
			}
			img.οnmοusemοve=mouseMove;
			img.οnmοusedοwn=mouseDown;
			document.οnmοuseup=function(){
			  if(typeof isDrag=="boolean"){
			    if(isIE)img.releaseCapture();//函数的作用就是将后续的mouse事件都发送给这个对象
			  }
			  isDrag=null;
			  img.className='cdft';
			  img.οnmοusemοve=mouseMove;
			  document.οnmοusemοve=null;
			}
			
			function makeWord() 
			{ 
				var word = new ActiveXObject("Word.Application"); 
				// var doc = word .documents.open("c:\test.doc"); //此处为打开已有的模版 
				var doc = word.Documents.Add("",0,1);//不打开模版直接加入内容 
				//var Range=doc.Range(); 
				//var sel = document.body.createTextRange();
				//sel.moveToElementText(img);
				//sel.select(); 
				//sel.execCommand("Copy"); 
				//Range.Paste(); 
				word.Application.Visible = true; 
				var pricture = word.Application.Selection.InlineShapes.AddPicture(img.src); 
				pricture.width=img.style.width.replace('px','');
				pricture.height=img.style.height.replace('px','');
				doc.saveAs("f:\\ba.doc"); //存放到指定的位置注意路径一定要是“\\”不然会报错 
			} 			
		</script> 
</body>
</html>

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 C++ 使用 OpenCV 库的 imshow 函数显示图片时,默认情况下窗口大小是固定的,无法进行拖动调整。但是可以通过设置窗口属性来实现窗口大小可调整。同时,为了保证图片显示效果,可以设置窗口等比例显示。如果需要将图片放大一定倍数进行显示,也可以通过 resize 函数实现。具体实现方式如下: ```c++ #include <opencv2/opencv.hpp> using namespace cv; int main() { Mat img = imread("image.jpg"); namedWindow("image", WINDOW_NORMAL); // 设置窗口属性为可调整大小 resize(img, img, Size(img.cols * 5, img.rows * 5)); // 将图片放大5倍 imshow("image", img); resizeWindow("image", img.cols, img.rows); // 设置窗口初始大小与图片大小相同 while (waitKey(1) != 'q') // 按下 q 键退出循环 { int key = waitKey(1); if (key == 'r') // 按下 r 键重置窗口大小 { resizeWindow("image", img.cols, img.rows); } } return 0; } ``` 在上述代码,通过 resize 函数将图片放大了5倍。同时,在程序使用了一个 while 循环,通过不断等待键盘输入来检测用户是否按下了 q 键,以实现程序的退出。如果用户按下了 r 键,则使用 resizeWindow 函数将窗口大小重置为图片大小。这样,即可实现窗口大小可调整,并等比例放大5倍显示图片的效果。 需要注意的是,如果窗口大小调整过小,可能会导致图片无法完全显示或显示效果不佳。建议在设置窗口大小时,保证图片能够完整显示,同时不要太小,以免影响显示效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值