Получить увеличенное изображение из UIImageView - PullRequest
0 голосов
/ 05 марта 2010

Я использую UIImageview внутри UIScrollView, чтобы позволить пользователям сжимать и увеличивать изображение. Теперь я хочу получить изображение, которое пользователь изменил (маленькое или увеличенное). Как я могу это сделать?

Спасибо.

Хорошо, сейчас пытаюсь что-то новое. Могу ли я получить эскиз от изображения где-то посередине? Я могу получить миниатюру от (0,0) для фиксированного размера. Могу ли я получить его, скажем, (10, 20) или (30, 30)? Еще раз спасибо. Я попытался использовать CGImageCreateWithImageInRect с прямоугольником, имеющим эти значения для х и у. Но это дает мне изображение с точки 0,0

1 Ответ

1 голос
/ 05 марта 2010

Когда вы масштабируете объект UIImageView внутри UIScrollView, вы изменяете только фрейм UIImageView, но UIImage в свойстве изображения остается неизменным.

Если вы хотите показать это изображение только в некотором другом UIImageView, вам не следует изменять размер UIImage, просто установите новый кадр UIImageView так же, как кадр увеличенного UIImageView из UIScrollView и используйте то же изображение:

UIImageView * ImageViewOnScroll;
//set image and zoom it
... 
UIImageView * newImageView = [[UIImageView alloc] initWithImage:ImageViewOnScroll.image];
newImageView.frame = ImageViewOnScroll.frame;

если по какой-то причине вы хотите создать новый UIImage с измененным размером, вы можете сделать это, например, следующим простым методом:

UIImage * resizeImage(UIImage * img, CGSize newSize){
    UIGraphicsBeginImageContext(newSize);

    //or other CGInterpolationQuality value
    CGContextSetInterpolationQuality(UIGraphicsGetCurrentContext(), kCGInterpolationDefault);

    [img drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}
...