jQuery Javascript 图像放大器

发布于 2024-11-08 13:12:00 字数 347 浏览 0 评论 0原文

我正在寻找一个悬停时的 jquery 或 javascript 图像放大器,不需要两个图像(大和小)即可工作。 我已经搜索了几个小时,但没有找到任何按照他们所说的方式工作的东西。

  • iZoom、
  • jQZoom、
  • tjpZoom、
  • 图像放大、
  • ImageZoom、
  • ImageLens、
  • Loupe

都已尝试过,但由于某种原因无法在我当前的配置下工作。

所以此时我正在寻找非谷歌搜索的结果,因为我已经浏览了“jquery Image Magnifier”的 25 页结果,但没有任何效果。

I'm looking for a jquery or javascript image magnifier on hover that does not require two images ( large and small ) to work.
I've searched for hours and haven't found any that work the way they are said to.

  • iZoom,
  • jQZoom,
  • tjpZoom,
  • Image Magnify,
  • ImageZoom,
  • ImageLens,
  • Loupe

have all been tried and don't work for one reason or another with my current config.

So at this point I'm looking for non-googled results since I've gone through 25 pages of results from 'jquery Image Magnifier' and nothing has worked.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

策马西风 2024-11-15 13:12:00

您可以在隐藏画布中渲染图像的副本,抓取鼠标位置周围的矩形,然后在第二个可见画布中渲染该部分的放大图。它是用很少的代码行编写的 - 即使是用普通的 Javascript:

var zoom = function(img){
    var canS = document.createElement('canvas'),
        can = document.createElement('canvas'),
        ctxS = canS.getContext('2d'),
        ctx = can.getContext('2d'),
        id = ctx.createImageData(240,240),
        de = document.documentElement;
    can.className = 'zoom';
    can.width = can.height = 240;
    canS.width = img.width;
    canS.height = img.height;
    img.parentElement.insertBefore(can,img.nextSibling);
    ctxS.drawImage(img,0,0);
    img.onmousemove = function(e){
        var idS=ctxS.getImageData(
            e.clientX-e.target.offsetLeft+(window.pageXOffset||de.scrollLeft)-20,
            e.clientY-e.target.offsetTop+(window.pageYOffset||de.scrollTop)-20,
            40,40);
        for (var y=0;y<240;y++)
            for (var x=0;x<240;x++)
                for (var i=0;i<4;i++)
                    id.data[(240*y+x)*4+i] = idS.data[(40*~~(y/6)+~~(x/6))*4+i];
        ctx.putImageData(id,0,0);
    }
}

示例:
http://kirox.de/test/magnify.html

有一个改进版本的链接,其中包含具有灯光效果和桶形畸变的可调节圆形镜头。也适用于画布。

限制:

  • 不适用于跨域图像 URL
  • 不适用于旧版本的 IE
  • 在当前版本的 Firefox 25 中悬停一段时间后会出现明显的减速

You could render a duplicate of the image in a hidden canvas, grab a rectangle around the mouse position and render a magnification of this part in a second visible canvas. It is written in very few lines of code - even in plain Javascript:

var zoom = function(img){
    var canS = document.createElement('canvas'),
        can = document.createElement('canvas'),
        ctxS = canS.getContext('2d'),
        ctx = can.getContext('2d'),
        id = ctx.createImageData(240,240),
        de = document.documentElement;
    can.className = 'zoom';
    can.width = can.height = 240;
    canS.width = img.width;
    canS.height = img.height;
    img.parentElement.insertBefore(can,img.nextSibling);
    ctxS.drawImage(img,0,0);
    img.onmousemove = function(e){
        var idS=ctxS.getImageData(
            e.clientX-e.target.offsetLeft+(window.pageXOffset||de.scrollLeft)-20,
            e.clientY-e.target.offsetTop+(window.pageYOffset||de.scrollTop)-20,
            40,40);
        for (var y=0;y<240;y++)
            for (var x=0;x<240;x++)
                for (var i=0;i<4;i++)
                    id.data[(240*y+x)*4+i] = idS.data[(40*~~(y/6)+~~(x/6))*4+i];
        ctx.putImageData(id,0,0);
    }
}

Example:
http://kirox.de/test/magnify.html

There's a link to an improved version featuring an adjustable round lens with light effects and barrel distortion. Also works with canvases.

Restrictions:

  • does not work with cross domain image URLs
  • does not work in older versions of IE
  • in the current version of Firefox 25 there is a significant slowdown after a while of hovering
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文