您能否告诉我背景图像是否有可能为背景图像创建鱼眼效果?
图片示例:
body {
position: relative;
background-color: #d0f0f9;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='0 0 80 80'%3E%3Cg fill='%231564e3' fill-opacity='0.4'%3E%3Cpath fill-rule='evenodd' d='M0 0h40v40H0V0zm40 40h40v40H40V40zm0-40h2l-2 2V0zm0 4l4-4h2l-6 6V4zm0 4l8-8h2L40 10V8zm0 4L52 0h2L40 14v-2zm0 4L56 0h2L40 18v-2zm0 4L60 0h2L40 22v-2zm0 4L64 0h2L40 26v-2zm0 4L68 0h2L40 30v-2zm0 4L72 0h2L40 34v-2zm0 4L76 0h2L40 38v-2zm0 4L80 0v2L42 40h-2zm4 0L80 4v2L46 40h-2zm4 0L80 8v2L50 40h-2zm4 0l28-28v2L54 40h-2zm4 0l24-24v2L58 40h-2zm4 0l20-20v2L62 40h-2zm4 0l16-16v2L66 40h-2zm4 0l12-12v2L70 40h-2zm4 0l8-8v2l-6 6h-2zm4 0l4-4v2l-2 2h-2z'/%3E%3C/g%3E%3C/svg%3E");
margin: 0;
padding: 0;
max-height: 100vh;
overflow: hidden;
}
由于您要为背景创建鱼眼效果,这将是一项耗时的任务,但是您可以创建一个可以加载任何图像的画布(canvas),然后将这个画布放在上面而不是背景上。
例子
这是一个链接到一个好的图像上传到这个例子(它必须首先保存为文件)。
此示例的代码可在此处找到,但最初取自此处。
另见: https ://ru.wikipedia.org/wiki/Distortion
我将这种效果称为放大镜(放大镜效果)。
这不是超级难实现,而是片段着色器中的 WebGL / GLSL。
如果您删除所有基础架构代码,则保留这段代码:
PS:现在可以用鼠标滚轮调整半径
PPS:鱼眼效果,以及去除它的能力,都是在这里实现的,也是通过
WebGL/GLSL