【问题标题】:How to move and crop image from masked image?如何从蒙版图像中移动和裁剪图像?
【发布时间】:2015-11-04 00:04:40
【问题描述】:

我在以下链接的帮助下成功屏蔽了图像:

How to Mask an UIImageView

在上面的链接中有两张图片分别名为 image.pngma​​sk.png

屏蔽图像后,我想裁剪结果图像。

我担心的是我想裁剪名为 image.png 的图像,但 ma​​sk.png 应该保持原样。我正在使用KICropImageView https://github.com/zhangzhixun/CropImageDemo 来裁剪图像。

但是当我滚动图像时,我的整个 result 图像正在滚动,但我只想滚动 image.png 而不是 ma​​sk.png 图像.

知道我该怎么做吗?

【问题讨论】:

  • 您如何滚动 图像
  • 我正在使用 github.com/zhangzhixun/CropImageDemo 进行裁剪,并且在该图像中使用 UIScrollView 滚动。
  • 嗯嗯嗯,没有。滚动视图内部是一个图像视图。因此,您滚动滚动视图以查看 图像视图 的不同部分。 - 无论如何,这是非常古老的代码 - 它甚至不使用 ARC! - 所以我真的不建议批发使用它。你最好从头开始。
  • @Matt 感谢您的建议,但我只想知道,我可以分离蒙版图像吗,例如,我在蒙版后名为 masked.png 的图像上有名为 image.png 的蒙版图像,我得到了结果图像,之后我想对我的原始图像 image.png 进行操作。那么有什么办法吗?
  • 假设您有视图 A 及其子视图视图 B。将掩码放在视图 A 上。它屏蔽视图 A 视图 B,因为视图 ​​B 在视图 A 内。现在,如果您移动视图 B,则蒙版不会移动,因为它已附加到视图 A。

标签: ios objective-c image crop masking


【解决方案1】:

你可以使用 PanGesture..

- (void)viewDidLoad
{ 

[super viewDidLoad];

UIPanGestureRecognizer *pan1 = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanImage:)];

self.imageview.userInteractionEnabled = YES;

[self.imageview addGestureRecognizer:pan1];

}

**after called Method handlePanImage..**

- (void)handlePanImage:(UIPanGestureRecognizer *)sender

{

 static CGPoint originalCenter;

 if (sender.state == UIGestureRecognizerStateBegan)


 {

 originalCenter = sender.view.center;

        sender.view.alpha = 0.8;

        [sender.view.superview bringSubviewToFront:sender.view];

    }

    else if (sender.state == UIGestureRecognizerStateChanged)

    {
        CGPoint translation = [sender translationInView:self.view];

        sender.view.center = CGPointMake(originalCenter.x + translation.x, originalCenter.y + translation.y);

    }

    else if (sender.state == UIGestureRecognizerStateEnded || sender.state == UIGestureRecognizerStateCancelled || sender.state == UIGestureRecognizerStateFailed)
    {
        // do whatever post dragging you want, e.g.
        // snap the piece into place

        [UIView animateWithDuration:0.2 animations:^{
            CGPoint center = sender.view.center;
            center.x = round(center.x / 50.0) * 50.0;
            center.y = round(center.y / 50.0) * 50.0;
            sender.view.center = center;
            sender.view.alpha  = 1.0;
        }];
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2019-11-01
    • 2010-11-03
    • 1970-01-01
    相关资源
    最近更新 更多