2016-09-28 3 views
0

私は900x900サイズに切り分ける風景UIImageを持っています。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

をしかし、contentMode.centerを使用し、それを引き伸ばすことなく、UIImageViewの中央に画像を置くために、あなたの質問に答えるために、ビューに合うようにスケーリングしますが、アスペクト比の使用を維持するには.aspectFit; .scaleToFillを使用して画像ビューに合わせてストレッチします。このリンクには他のオプションが説明されています。

関連する問題