2016-09-28 3 views
0

У меня есть пейзаж UIImage, который я хочу обрезать до размера 900x900.Изменение размера UIImage до 100% и урожай

Я не хочу, чтобы он растягивался - я хочу, чтобы он масштабировал его до 100% - изображение будет масштабировано до 900x900, а часть изображения, выходящего за пределы, будет обрезана.

Я попробовал этот код:

UIGraphicsBeginImageContextWithOptions(newSize, true, UIScreen.main.scale); 
image.draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height)) 

let newImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 
return newImage! 

Но все это делает растяжку изображения в соответствии 900x900 размер, это не то, что я хочу.

Любая идея, что я могу сделать здесь?

Благодаря

ответ

1

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

Вот код:

func centerCropImage(image1:UIImage) -> UIImage 
{ 

    let modifiedSize:CGFloat = 900.0; 
    // Center the crop area 

    let clippedRect = CGRect(x: ((image.size.width - modifiedSize)/2), y: ((image.size.height - modifiedSize)/2), width: modifiedSize, height: modifiedSize); 


    // Crop logic 
    let imageRef:CGImage = image.cgImage!.cropping(to: clippedRect)!; 

    //(image as! CGImage).cropping(to: clippedRect)!; 
    let croppedImage = UIImage(cgImage: imageRef); 

    return croppedImage; 
} 

Надеется, что это помогает

Happy кодирование ...

+0

И если это не так? Как я могу найти самый близкий размер до 900x900 (квадрат) для обрезки! –

+0

Извините, я не понял. Вы хотите обрезать до 900, только если размер изображения (ширина и высота) больше 900? – Janmenjaya

+0

№. Если, например, изображение равно 320x556, каково будет наибольшее разрешение обрезать квадрат? –

1

Если я правильно читать ваш вопрос, вы можете добиться того, что вы хотите, пошив contentMode свойство UIImageView (который вы прикрепить изображение к).

Посмотрите на ссылки разработчиков здесь: https://developer.apple.com/reference/uikit/uiimageview

Однако, чтобы ответить на ваш вопрос, чтобы поместить изображение в центре UIImageView, не растягивая его, использовать contentMode.center; масштабировать его, чтобы соответствовать представлению, но поддерживать соотношение сторон использования .aspectFit; и растянуть, чтобы соответствовать представлению изображения .scaleToFill. В ссылке есть другие варианты.

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