使用Swift裁剪图像并将其置于中心位置

在Swift编程中,如何裁剪图像,然后将其放在中心?

到目前为止,这就是我要做的…我已经成功裁剪了图像,但是我想在之后将其放在中间

ImgView.image = OrigImage

var masklayer = CAShapeLayer()

masklayer.frame = ImgView.frame

masklayer.path = path.CGPath

masklayer.fillColor = UIColor.whiteColor().CGColor

masklayer.backgroundColor = UIColor.clearColor().CGColor

ImgView.layer.mask = masklayer

UIGraphicsBeginImageContext(ImgView.bounds.size);

ImgView.layer.renderInContext(UIGraphicsGetCurrentContext())

var image = UIGraphicsGetImageFromCurrentImageContext()

ImgView.image = image

UIGraphicsEndImageContext();

let rect: CGRect = CGRectMake(path.bounds.minX, path.bounds.minY, path.bounds.width, path.bounds.height)

// Create bitmap image from context using the rect

let imageRef: CGImageRef = CGImageCreateWithImageInRect(image.CGImage, rect)

ImgView.bounds = rect

ImgView.image = UIImage(CGImage: imageRef)

我可以通过获取path.bound和size来居中,并更改ImageView的边界。:)

回答:

要获得作物的居中位置,可以将高度和宽度的差减半。然后,您可以在检查图像的方向(较长的部分)后为新的宽度和高度指定边界

func cropToBounds(image: UIImage, width: Double, height: Double) -> UIImage {

let contextImage: UIImage = UIImage(CGImage: image.CGImage)!

let contextSize: CGSize = contextImage.size

var posX: CGFloat = 0.0

var posY: CGFloat = 0.0

var cgwidth: CGFloat = CGFloat(width)

var cgheight: CGFloat = CGFloat(height)

// See what size is longer and create the center off of that

if contextSize.width > contextSize.height {

posX = ((contextSize.width - contextSize.height) / 2)

posY = 0

cgwidth = contextSize.height

cgheight = contextSize.height

} else {

posX = 0

posY = ((contextSize.height - contextSize.width) / 2)

cgwidth = contextSize.width

cgheight = contextSize.width

}

let rect: CGRect = CGRectMake(posX, posY, cgwidth, cgheight)

// Create bitmap image from context using the rect

let imageRef: CGImageRef = CGImageCreateWithImageInRect(contextImage.CGImage, rect)

// Create a new image based on the imageRef and rotate back to the original orientation

let image: UIImage = UIImage(CGImage: imageRef, scale: image.scale, orientation: image.imageOrientation)!

return image

}

我在本网站上找到了大部分此类信息,以防您想进一步阅读。

为 *

func cropToBounds(image: UIImage, width: Double, height: Double) -> UIImage {

let cgimage = image.cgImage!

let contextImage: UIImage = UIImage(cgImage: cgimage)

let contextSize: CGSize = contextImage.size

var posX: CGFloat = 0.0

var posY: CGFloat = 0.0

var cgwidth: CGFloat = CGFloat(width)

var cgheight: CGFloat = CGFloat(height)

// See what size is longer and create the center off of that

if contextSize.width > contextSize.height {

posX = ((contextSize.width - contextSize.height) / 2)

posY = 0

cgwidth = contextSize.height

cgheight = contextSize.height

} else {

posX = 0

posY = ((contextSize.height - contextSize.width) / 2)

cgwidth = contextSize.width

cgheight = contextSize.width

}

let rect: CGRect = CGRect(x: posX, y: posY, width: cgwidth, height: cgheight)

// Create bitmap image from context using the rect

let imageRef: CGImage = cgimage.cropping(to: rect)!

// Create a new image based on the imageRef and rotate back to the original orientation

let image: UIImage = UIImage(cgImage: imageRef, scale: image.scale, orientation: image.imageOrientation)

return image

}

以上是 使用Swift裁剪图像并将其置于中心位置 的全部内容, 来源链接: utcz.com/qa/412469.html

回到顶部