기본 과정 :
- 단색있는 UIImage
- 만들기 CGContext
- 지우기 OBJ (-C)
CGContextClearRect(CGContextRef c, CGRect rect);
또는 (스위프트) .clear(_ rect: CGRect)
와 새로운있는 UIImage의 중앙에 RECT 받기
- 새로운 이미지 여기
의 "투명 RECT"로 원본 이미지를 그리기 것은 전입니다 충분한 사용 스위프트 :
func drawImageOnCanvas(_ useImage: UIImage, canvasSize: CGSize, canvasColor: UIColor) -> UIImage {
let rect = CGRect(origin: .zero, size: canvasSize)
UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)
// fill the entire image
canvasColor.setFill()
UIRectFill(rect)
// calculate a Rect the size of the image to draw, centered in the canvas rect
let centeredImageRect = CGRect(x: (canvasSize.width - useImage.size.width)/2,
y: (canvasSize.height - useImage.size.height)/2,
width: useImage.size.width,
height: useImage.size.height)
// get a drawing context
let context = UIGraphicsGetCurrentContext();
// "cut" a transparent rectanlge in the middle of the "canvas" image
context?.clear(centeredImageRect)
// draw the image into that rect
useImage.draw(in: centeredImageRect)
// get the new "image in the center of a canvas image"
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
과 같이 호출 :
if let img = UIImage(named: "myimage") {
let expandedSize = CGSize(width: img.size.width + 60, height: img.size.height + 60)
let imageOnBlueCanvas = drawImageOnCanvas(img, canvasSize: expandedSize, canvasColor: .blue)
let v = UIImageView(image: imageOnBlueCanvas)
view.addSubview(v)
}