2016-11-15 2 views
0

Одна из основных функций моего приложения заключается в том, что Пользователь может использовать свои собственные изображения. Но размер изображения должен быть ограничен определенным размером. Например, пользователю не разрешается загружать панорамные изображения в imageView. Какой был бы лучший способ ограничить это?Отключить большие UIImages для UIImageView

Должен ли я просто выполнять оператор if после imagePickerController? И какой будет хороший максимальный размер?

+1

Вы можете легко установить изображение Image contentMode в aspectSizeToFit или Fill. Таким образом, вам не нужно беспокоиться о ограничениях размера изображения? – Joe

+0

Нет, мне нужно немного поработать с интенсивностью памяти, и если изображение будет большим, оно сработает с сигналом 9. – rotr

+1

Почему бы вам просто не попробовать образец изображения до фактического размера изображения, прежде чем назначать его просмотр изображений; то у вас не будет дополнительных пикселей в памяти. http://nshipster.com/image-resizing/ –

ответ

1

Вы можете проверить свойство image.size, а затем выполнить расчеты против этого, чтобы проверить чрезмерный размер или коэффициенты, которые вы не поддерживаете.

Например, панорамные изображения имеют, как правило, 2,3 или даже 4: 1 отношения ширины к высоте, что облегчит их обнаружение.

1

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

extension UIImage { 

    func resizeImage(_ targetSize: CGSize) -> UIImage { 

     // This is the rect that we've calculated out and this is what is actually used below 
     let rect = CGRect(x: 0, y: 0, width: targetSize.width, height: targetSize.height) 

     // Actually do the resizing to the rect using the ImageContext stuff 
     UIGraphicsBeginImageContextWithOptions(targetSize, false, 1.0) 
     self.draw(in: rect) 
     let newImage = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     return newImage! 
    } 
} 

Использование:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 

    let pickedImage = info[UIImagePickerControllerEditedImage] as! UIImage 
    let resizedImage = pickedImage.resizeImage(CGSize(width: 100, height: 100)) 
} 

Оптимальный размер вероятно, будет зависеть от ваших требований и почему у вас возникли сбои.

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