2015-12-24 2 views
1

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

Я также попытался взять квадратную картинку, без успеха.

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

Это кадрирование функции UIImage:

func croppImageByRect() -> UIImage { 
    let ratio: CGFloat = 1 // square 
    let delta: CGFloat 
    let offSet: CGPoint 

    //make a new square size, that is the resized imaged width 
    let newSize = CGSizeMake(size.width, (size.width - size.width/8)) 

    //figure out if the picture is landscape or portrait, then 
    //calculate scale factor and offset 
    if (size.width > size.height) { 
     delta = (ratio * size.width - ratio * size.height) 
     offSet = CGPointMake(delta/2, 0) 
    } else { 
     delta = (ratio * size.height - ratio * size.width) 
     offSet = CGPointMake(0, delta/2) 
    } 

    //make the final clipping rect based on the calculated values 
    let clipRect = CGRectMake(-offSet.x, -offSet.y, (ratio * size.width) + delta, (ratio * size.height) + delta) 

    //start a new context, with scale factor 0.0 so retina displays get 
    //high quality image 
    UIGraphicsBeginImageContextWithOptions(newSize, true, 0.0) 

    UIRectClip(clipRect) 
    drawInRect(clipRect) 
    let newImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return newImage 
} 

ответ

0

Ну, для начала, эта строки:

// make a new square size, that is the resized imaged width 
let newSize = CGSizeMake(size.width, (size.width - size.width/8)) 

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

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