如何使用目标c将图像切割成不规则形状

时间:2014-01-06 05:18:13

标签: ios

感谢大家。我有解决方案在java中将图像切割成不规则形状。但现在我想在iOS中实现这一目标。

这是我的要求:

我用手指通过触摸选择特定部位并在图像上绘图,完成绘图后,我想绘制图像的那一部分。我可以使用触摸绘制,但我怎样才能削减特定部分?

我知道将图像切割成矩形和圆形但不是特定的形状。

如果有人知道请帮帮我。

3 个答案:

答案 0 :(得分:2)

绘制一个封闭的CGPath并将其转换为图像蒙版。如果我有更多经验,我会提供更多细节,但我只是在天气应用程序中完成了图表。指南应该有所帮助。

答案 1 :(得分:0)

以下是包含所选矩形区域的公司图像的代码。但您可以使用CGPath自定义所选区域,然后将图像置于其中。

-(IBAction) cropImage:(id) sender{
    // Create rectangle that represents a cropped image  
    // from the middle of the existing image
    float xCo,yCo;
    float width=bottomCornerPoint.x-topCornerPoint.x;
    float height=bottomCornerPoint.y-topCornerPoint.y;
    if(width<0)
    width=-width;
    if(height<0)
    height=-height;

        if(topCornerPoint.x <bottomCornerPoint.x){
            xCo=topCornerPoint.x;
        }else{
            xCo=bottomCornerPoint.x;
        }

        if(topCornerPoint.y <bottomCornerPoint.y){
            yCo=topCornerPoint.y;
        }else{
            yCo=bottomCornerPoint.y;
        }

    CGRect rect = CGRectMake(xCo,yCo,width,height);
    // Create bitmap image from original image data,
    // using rectangle to specify desired crop area
    UIImage *image = [UIImage imageNamed:@"abc.png"];
    CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], rect);
    UIImage *img = [UIImage imageWithCGImage:imageRef]; 
    CGImageRelease(imageRef);
    // Create and show the new image from bitmap data
    imageView = [[UIImageView alloc] initWithImage:img];
    [imageView setFrame:CGRectMake(110, 600, width, height)];
    imageView.image=img;
    [[self view] addSubview:imageView];
    [imageView release];
}

答案 2 :(得分:0)

CGSize newSize = CGSizeMake(backGroundImageView.frame.size.width, backGroundImageView.frame.size.height);
UIGraphicsBeginImageContext(newSize);

[<Drawing Imageview> drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

[backGroundImageView.image drawInRect:CGRectMake(0,0,newSize.width,newSize.height) blendMode:kCGBlendModeSourceIn alpha:1.0];

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();