2012-07-03 3 views
-2

В моем приложении я фотографирую камеру и показываю ее в 320 * 320 UIView. Но поскольку разрешение изображения больше, чем у UIView, его вид выглядит сжатым. Есть ли способ изменить размер изображения?Как изменить размер UIImage до определенного размера

+0

@ Андреас: Это совершенно разные вопросы. И это говорит о настройке контента. Меня больше интересует сохранение всего контекста изображения, поэтому, даже если я выполняю некоторые операции с изображением, например, обрезкой или срезом, я не потеряю его содержимое ... – slonkar

ответ

3

Вот как вы можете изменить размер изображения, сохранив его соотношение сторон. Код, приведенный ниже, относится к категории UIImage:

+ (UIImage*)imageWithImage:(UIImage *)image 
       scaledToSize:(CGSize)newSize 
{ 

    float heightToWidthRatio = image.size.height/image.size.width; 
    float scaleFactor = 1; 
    if(heightToWidthRatio > 0) { 
     scaleFactor = newSize.height/image.size.height; 
    } else { 
     scaleFactor = newSize.width/image.size.width; 
    } 

    CGSize newSize2 = newSize; 
    newSize2.width = image.size.width * scaleFactor; 
    newSize2.height = image.size.height * scaleFactor; 

    UIGraphicsBeginImageContext(newSize2); 
    [image drawInRect:CGRectMake(0,0,newSize2.width,newSize2.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return newImage; 
} 
+0

Если это категория, то в чем необходимость параметра изображения? может также использовать 'self' вместо – abbood

0

я это делаю, но сначала я включаю сборщик фото для редактирования, так что по умолчанию 1: 1 аспект, например, так:

imgPicker.allowsImageEditing = YES; //I think this is what you're really looking for 

затем изменить размер изображения с помощью этого метода:

-(UIImage*)resizeImage:(UIImage*)image{ 
    CGSize newSize = CGSizeMake(480.0, 480.0); 
    UIGraphicsBeginImageContext(newSize); 
     [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
     UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 
+0

Я не был ищущий imagePickerEditing, но его уверенное что-то я не знал. Спасибо за обмен. – slonkar

+0

Да, я имею в виду, если вы используете соотношение 1: 1, это неплохой вариант, если он хорошо подходит вашему пользовательскому интерфейсу. Это позволяет пользователю масштабировать и позиционировать с помощью интерфейса, которым они пользуются. – mkral

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