2013-03-16 3 views
1

Я хочу, чтобы обрезать UIImage с помощью следующего кода:Image Обрезка вопрос

- (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; 
} 

Этот код работает отлично в тренажере, но дает необычный результат на устройстве.

+1

описывают далее "необычный результат на устройстве" ... – henser

+0

Проверьте 'scale' изображения, на устройство сетчатки, вам может потребоваться соответствующим образом скорректировать координаты вашего прямоугольника. – omz

+0

Спасибо @hener Но ответ ниже работал против меня. На самом деле обрезанная область Изображение больше, чем обрезана. Использование слов типа «Парни» запрещено? –

ответ

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; 
} 
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; 
    } 
+0

вы можете установить высоту, ширину, x и y. –

+0

Почему вы уменьшили размер на 150 –

+0

, потому что я снимаю снимок экрана, и у меня есть панель внизу. –

Смежные вопросы