首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React cropper cropBox在图像之外

React cropper cropBox在图像之外
EN

Stack Overflow用户
提问于 2018-11-16 22:01:12
回答 1查看 2.1K关注 0票数 3

我在当前的项目中使用了最新的cropper.js react包反应器,我只是迷路了。问题是,农作物的面积可以超出图像,这不应该。我已经试过了我能想到的一切。

下面是_crop方法,它在cropper中的每一个更改上都会被调用。

代码语言:javascript
复制
componentDidMount = () => {
    sessionStorage.setItem('shouldMove', false)
  }

_crop = ( e ) => {
    var canvasData = document.getElementsByClassName('cropper-hidden') 
    [0].cropper.canvasData
    var cropBoxData = this.refs.cropper.getCropBoxData();

    if ( sessionStorage.getItem('shouldMove') === 'false' ) {
      sessionStorage.setItem( 'currentLeft', cropBoxData.left )
      sessionStorage.setItem( 'currentTop', cropBoxData.top )
      sessionStorage.setItem('shouldMove', true)
    }else {
      if (
        cropBoxData.left <= canvasData.left ||
        cropBoxData.top  <= canvasData.top  ||
        cropBoxData.left + cropBoxData.width > canvasData.width + 
        canvasData.left ||
        cropBoxData.top + cropBoxData.height > canvasData.height + 
        canvasData.top
      ) {
        cropBoxData.left = sessionStorage.getItem( 'currentLeft' )
        cropBoxData.top = sessionStorage.getItem( 'currentTop' )
      }
    }}

//render

    <Cropper
      ref='cropper'
      src={URL.createObjectURL(this.props.image)}
      aspectRatio={this.props.template.aspect_ratio}
      guides={true}
      zoomTo={ this.state.zoomValue }
      dragMode="move"
      crop={this._crop}
    />

我知道这是一个sessionStorage噩梦,但我不能使用状态,因为它会重置整个裁剪器。我还将从图像标记中获取canvasData,因为cropper.canvasData()函数在这个function包中无法工作。

在我上面的代码中,react能够检测到作物区域在图像之外,但是我不知道我应该在那里做什么。我试图将农作物区域的位置设置为图像外的第一个位置。但数据并没有变化。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-16 22:32:04

哇。好吧,如果有人想解决同样的问题,答案很简单,但我真的找不到。只需将viewMode设置为"2“,如下所示:

代码语言:javascript
复制
<Cropper
      ref='cropper'
      src={this.props.image}
      aspectRatio={ar}
      guides={true}
      zoomTo={ this.state.zoomValue }
      dragMode="move"
      crop={this._crop}
      viewMode = {2} <-----
    />

它会成功的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53346018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档