canvas系列--图像处理(三) 图像缩放

àì夳堔傛蜴生んèń 2021-09-11 08:24 1095阅读 0赞

20170301142939997

图像缩放

一.首先分析原理

20170301143913221

如图所示:每一次都显示整个图像,只不过显示整个图像时候,无论是放大还是缩小,显示的目标图像的左上角坐标不一样,而此时的sx,sy就是目标图像的左上角的坐标。当图像放大时(scale>1),sx,sy都是负数,目标图像将从canvas的外部显示,不过在canvas画布外面是不显示的,会被自动裁;当图像缩小时(scale<1),sx,sy都正数,目标图像就会在canvas画布里面显示

sx = canvas.width /2 - imageWidth / 2;
sy = canvas.height / 2 - imageHeight / 2;

二.所有要用知识点

1.滑块控件(滑竿)-html5新对象

step是每一步滑动的进度值

2.拖动滑块控件的获取值

slider.onmousemove = function(){
scale = slider.value;
}

3.图片的加载:

var image = new Image();

image.src = “timg.jpg”;
image.onload = function(){

context.drawImage( image , dx ,dy , imageWidth , imageHeight );

}

4.当图像充满画布时,又要重新绘制图像,要记得清空画布

context.clearRect( 0 , 0 , canvas.width , canvas.height );

三.代码

  1. <!DOCTYPE html>
  2. <html>
  3. <head lang="en">
  4. <meta charset="UTF-8">
  5. <title></title>
  6. <style type="text/css">
  7. body{
  8. background: black;
  9. }
  10. #scale-range{
  11. display:block;
  12. margin:20px auto;
  13. width:800px;
  14. }
  15. #canvas{
  16. display:block;
  17. margin:0 auto;
  18. border:1px solid #aaa;
  19. }
  20. </style>
  21. </head>
  22. <body>
  23. <canvas id="canvas">您的浏览器尚不支持canvas </canvas>
  24. <input type="range" id="scale-range" min="0.5" max="3.0" step="0.01" value="1.0"/>
  25. <script>
  26. var canvas = document.getElementById("canvas");
  27. var context = canvas.getContext("2d");
  28. var slider = document.getElementById("scale-range");
  29. var image = new Image();
  30. var imgW=1024;
  31. var imgH=750;
  32. canvas.width = 1024;
  33. canvas.height = 750;
  34. window.onload = function(){
  35. var scale = slider.value;
  36. image.src = "timg.jpg";
  37. image.onload = function(){
  38. drawImageByScale( scale );
  39. slider.onmousemove = function(){
  40. scale = slider.value;
  41. drawImageByScale( scale );
  42. }
  43. }
  44. }
  45. function drawImageByScale( scale ){
  46. var imageWidth = imgW * scale; //imgW,imgH是图片的大小
  47. var imageHeight =imgH * scale;
  48. dx = canvas.width /2 - imageWidth / 2;//目标图像的坐标
  49. dy = canvas.height / 2 - imageHeight / 2;//目标图像的坐标
  50. context.clearRect( 0 , 0 , canvas.width , canvas.height );
  51. context.drawImage( image , dx ,dy , imageWidth , imageHeight );
  52. }
  53. </script>
  54. </body>
  55. </html>

发表评论

表情:
评论列表 (有 0 条评论,1095人围观)

还没有评论,来说两句吧...

相关阅读

    相关 图像算法

    怎样计算缩放比例? 有四种方法:1.对角线法,以对角线长度为准,其伸长者为放大,缩短者为缩小,其底边并行线即为新尺寸。2.计算器法,先输入欲缩放宽度,按除键,再输入原稿尺

    相关 OpenCV 几何变换-图像

    图像的缩放主要用于改变图像的大小,缩放后图像的图像的宽度和高度会发生变化。在图像处理中是一种很基础的几何变换,但是具有很重要的作用,比如:当输入图片尺寸过大时,处理速度会很慢,