Пользовательский размер кадрирования в UIImagePickerController

Я боролся с этим некоторое время, так как документации по этому вопросу мало. У меня есть UIImagePickerController в моем приложении для iPhone, которое я использую для выбора изображения, которое будет позже применено в качестве фона представления. Это достаточно легко сделать. К сожалению, если пользователь выбирает большое изображение из фотопленки, его необходимо изменить в размере и обрезать, чтобы оно выглядело прилично.

Достаточно просто переключить picker.allowsEditing на YES и запустить редактор изображений, но размеры обрезки по умолчанию слишком малы. Мне нужно установить его на полный размер экрана iPhone (320 для старых моделей, 640 для новых). Как ты это делаешь? Я гуглил и просматривал документацию Apple, но ничего не нашел. Лучшее, что я нашел, это немного ошибочное решение 2009 года (http://blog.stormyprods.com/2009/06/image-picker-sample.html), который почти работает, но смещает изображение примерно на 20 пикселей вниз. (Кроме того, это немного сложно.) Наверняка есть элегантное и простое решение, которое я упускаю?


person redwall_hp    schedule 18.09.2010    source источник


Ответы (2)


Год спустя - привет, как и вы, я не нашел ничего полезного, поэтому я создал этот проект - всплывающее окно UIImagePicker для редактирования кадрирования и масштабирования нестандартного размера для iPad.

Вы можете легко изменить его на iphone, надеюсь, что это кому-то поможет. Вот он — https://github.com/yogev77/UIImagePickerWithEditor

person Yogev Shelly    schedule 08.09.2011
comment
Кадрируйте во время фотосъемки, а не после! Вышеупомянутый проект github не является решением вопроса, опубликованного выше. Если вы установите в качестве источника изображения камеру, окно редактирования обрезки появится после съемки фотографии, а не во время ее съемки. - person Gamma-Point; 28.02.2013
comment
не могу решить проблему с памятью. я хочу уменьшить использование памяти моей 8-мегапиксельной камерой - person OMGPOP; 18.03.2013
comment
@Gamma-Point, который вы хотите изменить во время фотосъемки? Это не то, что этот вопрос требует - person AnthonyBlake; 23.05.2013

Может быть, это должно работать:

-(UIImage *)imageWithImage:(UIImage *)image CovertToSize:(CGSize)size {
      UIGraphicsBeginImageContext(size);
      [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
      UIImage *destImage = UIGraphicsGetImageFromCurrentImageContext();    
      UIGraphicsEndImageContext();
      return destImage;
}
person Meghan    schedule 06.03.2011