2016-09-28 97 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; 
} 

希望它可以幫助

快樂編碼...

+0

如果它不?我如何找到最接近900x900(平方米)的尺寸來裁剪! –

+0

對不起,我沒有明白你的觀點。你的意思是隻有當圖像尺寸(寬度和高度)都大於900時纔會裁剪爲900? – Janmenjaya

+0

沒有。例如,如果圖像是320x556,那麼裁剪到一個正方形的最大分辨率是多少? –

1

如果我正確地讀你的問題,你可以通過定製一個UIImageView(你附上您的圖像)的contentMode屬性達到你想要什麼。

看看開發人員參考這裏:https://developer.apple.com/reference/uikit/uiimageview

然而,要回答你的問題,把圖像中一個UIImageView中心無拉伸它,使用contentMode.center;將其縮放以適應視圖,但保持縱橫比使用.aspectFit;並伸展以適應圖像視圖使用.scaleToFill。鏈接中還有其他選項。