JCrop showPreview 功能说明

Posted

技术标签:

【中文标题】JCrop showPreview 功能说明【英文标题】:JCrop showPreview function explanation 【发布时间】:2015-10-25 00:58:53 【问题描述】:

我很难弄清楚这个函数究竟做了什么以及为什么会这样做。该函数来自 JCrop,这是一个非常标准的 jQuery 裁剪插件。此函数负责计算如何在您打算裁剪的图像旁边显示一个小预览图像。您在图像上进行选择,然后预览会显示……嗯……预览。

这里是函数,来自 JCrop 的示例页面:

function showPreview(coords)

    var rx = 100 / coords.w;
    var ry = 100 / coords.h;

    $('#preview').css(
        width: Math.round(rx * 500) + 'px',
        height: Math.round(ry * 370) + 'px',
        marginLeft: '-' + Math.round(rx * coords.x) + 'px',
        marginTop: '-' + Math.round(ry * coords.y) + 'px'
        );

还需要注意的是,JCrop 实例有一个选项,其中纵横比设置为 1,preview div 的宽度为 100 像素,高度为 100 像素。

如果您想查看代码甚至尝试一下,这里有一个链接。

http://deepliquid.com/projects/Jcrop/demos.php?demo=thumbnail

我不明白很多数字.. rx * 500?为什么? ry * 370?为什么?非常感谢您从上到下遍历此逻辑。

【问题讨论】:

【参考方案1】:

这些参数 500 和 370 是正在裁剪的图片的确切高度。演示中的那个是 500px 宽和 370px 高的。

在预览中(右侧)还显示了整个图片。当您更改选择时,它会更新图像的参数。您正在计算选择框的大小

 width: Math.round(rx * 500) + 'px',
        height: Math.round(ry * 370) + 'px',

为了设置预览的高度。也可以通过这两个计算你离左侧和顶部的距离:

 marginLeft: '-' + Math.round(rx * coords.x) + 'px',
        marginTop: '-' + Math.round(ry * coords.y) + 'px'

它实际上是在计算所选区域的大小以及距离左上角的距离,以便将正确的参数发送到预览区域。

AspectRatio 实际上显示宽度/高度之间的比率 - 因此,如果您要裁剪 100x100 图片,则为 100/100 = 1 ,但如果您要裁剪 250x100 图片,则为 250/100 = 2.5。

【讨论】:

以上是关于JCrop showPreview 功能说明的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Jcrop 图像裁剪来源

jQuery:jCrop 'setSelect' 根本没有设置?

JCrop - 功能未实现

jQuery如何添加到Jcrop缩放功能

流体图像上的 Jquery JCrop 功能

Jcrop最新手册