KonvaJS 裁剪和调整大小

拉普斯考斯

我正在使用 KonvaJS 创建一个简单的图像编辑器。作为图像调整功能的基础,我使用了 Konva 示例 ( Knonva JS Image Resize ) 中的代码。但现在我正在努力实现裁剪功能。在单击按钮时,我使用户能够在舞台上绘制一个矩形。然后我在我的图像上使用内置的裁剪功能,绘制矩形的坐标、宽度和高度并裁剪图像。但是,当我在裁剪之前调整图像大小时,裁剪区域会显示从原始大小的图像中裁剪出来的部分。

是否有一种简单的内置方式,我无法从调整大小的图像中进行裁剪?或者我是否必须根据图像的调整大小值计算绘制矩形的位置和大小,然后裁剪该部分并调整大小和重新定位结果?

裁剪图像:

function cropImage(x, y, width, height, activeLayer) {
  var image = activeLayer.get('Image')[0], xDiff = 0, yDiff = 0, newWidth, newHeight, newX, newY;
  // only Crop visible Parts of the Image
  if(x  < activeLayer.getX()) {
      xDiff = activeLayer.getX() - x;
  }
  if(y  < activeLayer.getY()) {
      yDiff = activeLayer.getY() - y;
  }
  if (x + width > activeLayer.getX() + activeLayer.width()) {
      width = width - ((x + width) - (activeLayer.getX() + activeLayer.width()));
  }
  if (y + height > activeLayer.getY() + activeLayer.height()) {
      height = height - ((y + height) - (activeLayer.getY() + activeLayer.height()));
  }
  newHeight = height - yDiff;
  newWidth = width - xDiff;
  newX = (x - activeLayer.getX()) + image.cropX() + xDiff;
  newY = (y - activeLayer.getY()) + image.cropY() + yDiff;

  image.width(newWidth);
  image.height(newHeight);
  activeLayer.width(newWidth);
  activeLayer.height(newHeight);
  activeLayer.setX(newX + activeLayer.getX() - image.cropX());
  activeLayer.setY(newY + activeLayer.getY() - image.cropY());
  image.crop({
    x : newX ,
    y : newY ,
    width : newWidth,
    height : newHeight
  });
  //Reposition anchors so topLeft Anchor is always in 0/0 of the grouplayer
  repositionAnchors(activeLayer);
  activeLayer.draw();
}
拉普斯考斯

调整大小时,我保留数组中宽度和高度的比率,并计算为裁剪绘制的矩形的位置和尺寸:

cropX = ((x  / ratios[id].width) - (activeLayer.getX() / ratios[id].width)) + (image.cropX()) + (xDiff / ratios[id].width);
cropY = ((y  / ratios[id].height)- (activeLayer.getY() / ratios[id].height)) + (image.cropY()) + (yDiff / ratios[id].height);
cropWidth = (width / ratios[id].width)  - (xDiff / ratios[id].width),
cropHeight = (height / ratios[id].height) - (yDiff / ratios[id].height)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

konvajs中的图像循环裁剪

来自分类Dev

KonvaJS:如何在调整大小时更改文本类属性(字体大小、高度和宽度)?

来自分类Dev

在Konvajs中更改宽度和大小,而不是scaleX和scaleY

来自分类Dev

konvajs和openlayers之间的混合模式

来自分类Dev

使用CSS调整大小和裁剪图像

来自分类Dev

调整大小和裁剪,内存不足

来自分类Dev

使用 graphicsmagick 调整大小和裁剪图像

来自分类Dev

调整大小和裁剪图像并保持高宽比NodeJS和gm

来自分类Dev

使用ImageResizer调整图像大小和裁剪图像

来自分类Dev

逆向工程图像裁剪和调整大小

来自分类Dev

如何使用PDFlib精确放置裁剪和调整大小的图像?

来自分类Dev

TYPO3图像调整大小和裁剪

来自分类Dev

如何在调整大小和裁剪的位图中移动?

来自分类Dev

调整画布大小而不裁剪

来自分类Dev

如何将konvaJS中的文本值拉伸到一定的宽度和高度?

来自分类Dev

载波:如何裁剪和调整大小以使最终图片的宽度和高度完全相同?

来自分类Dev

关闭Konvajs警告

来自分类Dev

按比例调整UIImage的大小,然后裁剪

来自分类Dev

C#裁剪并调整大图像的大小

来自分类Dev

在调整大小窗口上裁剪图片

来自分类Dev

裁剪矩形未在响应图中调整大小

来自分类Dev

使用CSS调整图像的裁剪部分的大小

来自分类Dev

UIImage调整大小并裁剪以适合框架

来自分类Dev

PHP调整大小并裁剪居中的顶部图像

来自分类Dev

调整窗口大小时裁剪文本

来自分类Dev

在调整大小窗口上裁剪图片

来自分类Dev

圆角图像,无需调整大小/裁剪/拉伸

来自分类Dev

裁剪矩形未在响应图中调整大小

来自分类Dev

调整相机拍摄的图像大小而不会裁剪

Related 相关文章

热门标签

归档