HTML5中,如何为图片制作放大镜效果?

HTML5中,如何为图片制作放大镜效果?,第1张

制作图片的放大效果我考虑到的方法是将原始图片绘制到canvas上,然后在对canvas进行局部裁剪最后对裁剪的部分进行放大,这样就可以实现放大镜的效果。

这里我给出一个实现这个想法的示例。该示例实际上就是运用HTML5 canvas中对画布进行裁剪与保存画布状态的相关知识实现的。

上面是给出示例的效果图。这是不是你想要的放大镜效果呢?

下面我们来看下示例代码:在这个示例中当你点击图片时图片就会出现上图效果,再一次点击时就变成原始图片了。

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>放大镜</title>

<!—HTML代码设计:一个简单的canvas元素-->

</head>

<body>

<div id="result-stub" class="well hidden">

<canvas id="canvas" width="345" height="345">

<p>你的浏览器不支持canvas元素</p>

</canvas>

</div>

<script>

window.onload=function() {

//获取canvas对象以及图片对象

var

canvas = document.getElementById('canvas'),

img = new Image(),

context = null,

dataUrl = null,

//设置一个标记,该标记的作用是控制我们点击canvas时放大镜效果的消失和出现

isMagnified = false,

//init函数只要是在图片加载时绘制出图形

init = function() {

img.onload = function() {

//绘制原始图片

context.drawImage(img, 0, 0)

//将图片信息转化为二进制信息或者URL信息存储在dataUrl中方便后面调用

dataUrl = canvas.toDataURL()

}

img.src = 'fist-pump-baby.jpg'

//设置标记值

isMagnified = false

},

//magnify函数的作用是绘制具有放大镜效果的图形

magnify = function() {

//保存当前画布的绘制状态即画布绘制原始图片的状态。方便我们在后面恢复到绘制原始图片的状态

context.save()

//因为放大镜的圆圈和把手是通过canvas绘制的这里设置了一些绘制把手和圆圈的样式属性。

context.lineWidth = 10// 线条宽度

context.shadowColor = '#000'// 阴影的颜色黑色

context.shadowBlur = 15// 模糊级别为15

context.shadowOffsetX = 5// 形状与阴影的水平距离5

context.shadowOffsetY = 5// 形状与阴影的垂直距离5

//保存画布当前状态即我们设置阴影属性后的状态方便后面使用

context.save()

//绘制出放大镜把手的图形

context.beginPath()

context.moveTo(230, 230)

context.lineCap = 'round'

context.lineWidth = 30

context.lineTo(285, 285)

context.stroke()

//对图片进行裁剪,裁剪出的图形是一个圆形。

context.beginPath()

context.arc(

150,

150,

115,

0,

Math.PI * 2,

true)

context.clip()

//创建一个新的Image对象,这个Image对象的图片资源是前面存储在dataUrl中的图片资源。所以这个Image对象和之前初始化的Image对象是完全一样的。

var magnified = new Image()

magnified.src = dataUrl

//对Image对象进行放大1.5倍,并进行绘制。注意此时的画布状态时裁剪为一个圆形的状态,所以这里绘制的也仅仅是图片中的一个圆形区域。这里为了绘制出图片中娃娃的脸设置了绘制的图片有一定的偏移量。

context.scale(1.5, 1.5)

context.drawImage(img, -40, -40)

//调用restore()函数将画布状态恢复到绘制把放大镜把手时的状态,即具有阴影属性

context.restore()

//绘制放大镜的圆圈,即绘制刚刚我们裁剪出来图片的边框。这样刚刚裁剪出来的圆形图形就会正好处于放大镜的圆圈中。

context.arc(

150,

150,

115,

0,

Math.PI * 2,

true)

context.stroke()

//重置画布,将画布恢复到绘制元素图片的状态,以方便绘制出放大效果后,再次点击是绘制原始图片。

context.restore();

//设置标记值,实现点击后放大效果消失。

isMagnified = true

}

//加载初始化代码,即当运行页面时会在页面绘制出一个原始图像

init()

//监听画布的点击事件,当点击页面的图像时会根据标记的值来进行判断是否对画布进行方大处理

$('canvas').click(function() {

if (isMagnified) {

init()//绘制原始图像

}

else {

magnify()//绘制放大的图像

}

})

}

</script>

<script src="jquery.js"></script>

</body>

</html>

对于这些知识在一个叫秒秒学的教程网站上有相关的学习资料,有兴趣的可以自己去看看,希望对你有帮助。

html设置图片大小:在img标签上设置图片大小、或者使用css样式控制图片大小。 *** 作方法如下。

设备:戴尔Inspiron15

系统:Win10

软件:visual studio code1.55.2

1、首先打开电脑之后,如下图所示,新建一个“cs”文件夹,在文件夹中存储一张图片用来做演示。

2、接着打开visual studio code点击“文件”-“打开文件夹”,选中上一步建立好的“cs”文件夹。

3、然后点击“cs”右侧的“新建文件”图标,创建一个“1.html”文件,在空白html文件中输入一个英文“!”按Tab键填充html基本代码。

4、接着在body中插入img标签,alt规定图像的替代文本,src规定显示图像的URL。

5、然后在img标签上使用width属性设置图片宽度、height属性设置图片高度。

6、最后在title标签下面插入style标签(如下图所示),接着在style标签中编辑css样式,如下图所示,img{width:100pxheight:auto},这里表示把图片设置为100px宽、auto表示高度根据图片比例自适应。设置图片大小就完成了。

*** 作方法如下:

1、以Hbuilder来讲解,首先新建一个HTML页面,如图;

2、接着给标签设置背景图片,如图设置的是<body>标签;

3、然后新建一个css文件,如图;

4、这里给body标签设置background-size属性,如果标签是div就写div,然后可以设置宽度和高度;

5、如图所示,在new_file.html里面编辑:<link href="css/1.css" type="text/css" rel="stylesheet"/>,就可以设置背景图片的大小了;

6、最后在浏览器中预览一下,如图为部分背景。

扩展资料:

如何在htlm中插入图片:

1、用dw创建一个网页文档,会自动写入这些代码。我用的是DW软件;

2、在<body></body>中间写入<img src 后会自动有一个“浏览”;

3、在下一步之前要进行保存,ctrl+s进行保存;

4、点击“浏览”后,选择图片的来源路径;

5、最后在键盘上敲打"</"就行了,图片就插入了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8345005.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存