#swift #core-image #cifilter #ciimage
#swift #core-image #cifilter #ciimage
Вопрос:
Я использую "CIAttributedTextImageGenerator"
для генерации CIImage
из текста, а затем накладываю его на отредактированное изображение с помощью "CISourceAtopCompositing"
:
// Text to image
let font = UIFont.systemFont(ofSize: 78)
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = .center
paragraphStyle.firstLineHeadIndent = 5.0
let shadow = NSShadow()
shadow.shadowColor = UIColor.red
shadow.shadowBlurRadius = 5
let attributes: [NSAttributedString.Key: Any] = [
.font: font,
.foregroundColor: UIColor.blue,
.paragraphStyle: paragraphStyle,
.shadow: shadow
]
let attributedQuote = NSAttributedString(string: "General Kenobi", attributes: attributes)
let textGenerationFilter = CIFilter(name: "CIAttributedTextImageGenerator")!
textGenerationFilter.setValue(attributedQuote, forKey: "inputText")
textGenerationFilter.setValue(NSNumber(value: Double(inputSizeFactor)), forKey: "inputScaleFactor")
let textImage = textGenerationFilter.outputImage!.oriented(.right)
finalImage = textImage
.applyingFilter("CISourceAtopCompositing", parameters: [ kCIInputBackgroundImageKey: finalImage])
Однако текстовое изображение всегда находится в правом нижнем углу моего отредактированного изображения:
Как я могу установить для него пользовательское местоположение? Например, если я хочу, чтобы оно было в правом нижнем углу или в центре редактируемого изображения?
Ответ №1:
Вы можете применить преобразования к изображению, прежде чем составлять его поверх фона:
let transformedText = textImage.transformed(by: CGAffineTransform(translationX: 200, y: 300)
Боюсь, вам придется самостоятельно рассчитать точное положение для центрирования изображения. Нет встроенного способа центрировать одно изображение поверх другого.