如何裁剪具有特定位置的图像并设置为另一个视图

Posted

技术标签:

【中文标题】如何裁剪具有特定位置的图像并设置为另一个视图【英文标题】:How to crop image with particular position and set to another view 【发布时间】:2014-03-29 09:48:36 【问题描述】:

从特定位置裁剪图像并设置为另一个视图

最终图像视图

self.finalImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 20, 320, 320)];
if(rectangle_button_preesed_view)

    self.finalImageView.image =[self croppIngimageByImageName:self.imageView.image toRect:CGRectMake(30, 120, 260, 340)];

else

    self.finalImageView.image =[self croppIngimageByImageName:self.imageView.image toRect:CGRectMake(30, 80, 260, 260)];

裁剪图像

- (UIImage *)croppIngimageByImageName:(UIImage *)imageToCrop toRect:(CGRect)rect

    CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect);
    UIImage *cropped = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    NSLog(@" cropped size %f %f ",cropped.size.width,cropped.size.height);
    return cropped;    

【问题讨论】:

【参考方案1】:
@implementation UIImage (Crop)

- (UIImage *)crop:(CGRect)cropRect 

    CGImageRef imageRef = CGImageCreateWithImageInRect([self CGImage], cropRect);
    UIImage *cropedImage = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);

    return cropedImage;


【讨论】:

【参考方案2】:
CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
// or use the UIImage wherever you like
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]]; 
CGImageRelease(imageRef);

@implementation UIImage (Crop)

- (UIImage *)crop:(CGRect)rect 

    rect = CGRectMake(rect.origin.x*self.scale, 
                      rect.origin.y*self.scale, 
                      rect.size.width*self.scale, 
                      rect.size.height*self.scale);       

    CGImageRef imageRef = CGImageCreateWithImageInRect([self CGImage], rect);
    UIImage *result = [UIImage imageWithCGImage:imageRef 
                                          scale:self.scale 
                                    orientation:self.imageOrientation]; 
    CGImageRelease(imageRef);
    return result;


@end

【讨论】:

【参考方案3】:

除了CoreGraphics 解决方案,我还建议使用支持过滤器进行图像处理的CoreImage。您应该查看this documentation page 中的CICrop 过滤器。

注意:ios 5 或更高版本支持此过滤器。

我目前没有确切的解决方案,但您可以继续使用a similar thread。

希望对你有帮助!

【讨论】:

以上是关于如何裁剪具有特定位置的图像并设置为另一个视图的主要内容,如果未能解决你的问题,请参考以下文章

图像视图裁剪为特定形状

在matlab中的图像中裁剪具有特定分辨率的图像

如何在黑莓中裁剪具有特定形状的图像?

如何使用默认裁剪意图裁剪 android marshmallow 中的图像?

如何将Listview数据裁剪到android中的滚动位置?

如何在Java中裁剪调整大小的图像?