이 게시물 에서 찾은이 기능을 사용하여 컬러 이미지를 그레이 스케일 이미지로 변환합니다.
func grayScaleImage() -> UIImage {
let imageRect = CGRectMake(0, 0, self.size.width, self.size.height);
let colorSpace = CGColorSpaceCreateDeviceGray();
let width = UInt(self.size.width)
let height = UInt(self.size.height)
let context = CGBitmapContextCreate(nil, width, height, 8, 0, colorSpace, .allZeros);
CGContextDrawImage(context, imageRect, self.CGImage!);
let imageRef = CGBitmapContextCreateImage(context);
let newImage = UIImage(CGImage: imageRef)
return newImage
}
배경이 투명한 이미지로 몇 가지 테스트를했는데 결과는 검은 색 배경의 이미지입니다. 투명 / 반투명 픽셀이 이미지의 배경이 흰색 인 것처럼 작동하도록하고 싶습니다. 어떻게해야합니까?
이미지의 투명한 부분을 흰색 (또는 다른 색상)으로 만들려면 그리기 컨텍스트에서 채워진 사각형을 그립니다.
스위프트 3 :
extension UIImage {
func grayScaleImage() -> UIImage {
//let imageRect = CGRectMake(0, 0, self.size.width, self.size.height);
let imageRect = CGRect(origin: CGPoint.zero, size: self.size)
let colorSpace = CGColorSpaceCreateDeviceGray();
let width = Int(self.size.width)
let height = Int(self.size.height)
let context = CGContext(data: nil, width: width, height: height, bitsPerComponent: 8, bytesPerRow: 0, space: colorSpace, bitmapInfo: .allZeros)
// set Fill Color to White (or some other color)
context?.setFillColor(UIColor.white.cgColor)
// Draw a white-filled rectangle before drawing your image
context?.fill(imageRect)
context?.draw(self.cgImage!, in: imageRect)
let imageRef = context?.makeImage()
let newImage = UIImage(cgImage: imageRef!)
return newImage
}
}
스위프트 2.2 :
extension UIImage {
func grayScaleImage() -> UIImage {
let imageRect = CGRectMake(0, 0, self.size.width, self.size.height);
let colorSpace = CGColorSpaceCreateDeviceGray();
let width = Int(self.size.width)
let height = Int(self.size.height)
let context = CGBitmapContextCreate(nil, width, height, 8, 0, colorSpace, .allZeros);
// set Fill Color to White (or some other color)
CGContextSetFillColorWithColor(context, UIColor.whiteColor().CGColor)
// Draw a white-filled rectangle before drawing your image
CGContextFillRect(context, imageRect)
CGContextDrawImage(context, imageRect, self.CGImage!);
let imageRef = CGBitmapContextCreateImage(context);
let newImage = UIImage(CGImage: imageRef!)
return newImage
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다