图像裁剪问题

时间:2013-03-16 12:50:26

标签: iphone objective-c ios5 uiimage crop

我想使用以下代码裁剪UIImage:

 - (UIImage*)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect
 {
     CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect);
     // or use the UIImage wherever you like
     UIImage * img =  [UIImage imageWithCGImage:imageRef];
     CGImageRelease(imageRef);
     return img;
 }

此代码在模拟器中工作正常,但在设备上提供了异常结果。

2 个答案:

答案 0 :(得分:0)

创建一个UIImage类别并尝试添加它。

@implementation UIImage(Crop)

- (UIImage *)crop:(CGRect)cropRect {

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

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

答案 1 :(得分:0)

试试这个:

    - (UIImage *)cropImage:(UIImage *)oldImage {
            CGSize imageSize = oldImage.size;
            UIGraphicsBeginImageContextWithOptions(CGSizeMake( imageSize.width,imageSize.height - 150),NO,0.);
            [oldImage drawAtPoint:CGPointMake( 0, -80) blendMode:kCGBlendModeCopy alpha:1.];
            UIImage *croppedImage = UIGraphicsGetImageFromCurrentImageContext();
            UIGraphicsEndImageContext();
            return croppedImage;
    }