обрезка UIImage к новому соотношению сторон - PullRequest
1 голос
/ 15 июля 2011

Я хочу обрезать UIImage, чтобы получить новое соотношение сторон ...

bounds - это CGRect с (0,0, newwidth, newhigh) ...

- (UIImage *)croppedImage:(UIImage *)myImage :(CGRect)bounds {
    CGImageRef imageRef = CGImageCreateWithImageInRect(myImage.CGImage, bounds);
    UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    CGSize asd =  croppedImage.size;
    return croppedImage;
}

с звонком:

[workImage croppedImage: workImage: CGRectMake(0, 0, newWidth, newHeigh)];

после этого "рабочий образ" имеет тот же размер, что и раньше ...

что может быть не так?

привет

1 Ответ

3 голосов
/ 15 июля 2011

Ну, вы не изменяете текущее изображение, так как это похоже на метод категории на UIImage. Вы создаете новое изображение и возвращаете его. Так что будет работать, это

workImage = [workImage croppedImage: workImage: CGRectMake(0, 0, newWidth, newHeigh)];

Тем не менее, я думаю, что метод лучше называть так (если он используется как метод категории в UIImage)

- (UIImage *)croppedImageWithRect:(CGRect)bounds {
    CGImageRef imageRef = CGImageCreateWithImageInRect(self.CGImage, bounds);
    UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    CGSize asd =  croppedImage.size;
    return croppedImage;
}

Таким образом, вы будете называть это так,

workImage = [workImage croppedImageWithRect:CGRectMake(0, 0, newWidth, newHeigh)];

И, как примечание, не используйте такие методы, как croppedImage::. Все параметры лучше называть, скажем, croppedImage:rect:.

...