Я работаю с фреймворком Photos и создал приложение, которое будет применять фильтр к изображению. Теперь вместо применения фильтра я хочу добавить текст поверх изображения. Этот API предоставляет мне CIImage
, который я могу использовать для создания выходных данных CIImage
. Я просто не знаю, как добавить текст в определенное место в файл CIImage
. Если я прав, не рекомендуется преобразовывать его в CGImage
, а затем добавлять текст из-за снижения производительности.
Как можно работать с существующим CIImage
для вывода точно такого же CIImage
(с сохранением исходного качества изображения) с текстом, наложенным сверху в определенном месте?
//Get full image
let url = contentEditingInput.fullSizeImageURL
let orientation = contentEditingInput.fullSizeImageOrientation
var inputImage = CIImage(contentsOfURL: url)
inputImage = inputImage.imageByApplyingOrientation(orientation)
//TODO: REPLACE WITH TEXT OVERLAY
/*//Add filter
let filterName = "CISepiaTone"
let filter = CIFilter(name: filterName)
filter.setDefaults()
filter.setValue(inputImage, forKey: kCIInputImageKey)
let outputImage: CIImage = filter.outputImage*/
//Create editing output
let jpegData: NSData = self.jpegRepresentationOfImage(outputImage)
let adjustmentData = PHAdjustmentData(formatIdentifier: AdjustmentFormatIdentifier, formatVersion: "1.0", data: filterName.dataUsingEncoding(NSUTF8StringEncoding))
let contentEditingOutput = PHContentEditingOutput(contentEditingInput: contentEditingInput)
jpegData.writeToURL(contentEditingOutput.renderedContentURL, atomically: true)
contentEditingOutput.adjustmentData = adjustmentData
PHPhotoLibrary.sharedPhotoLibrary().performChanges({ () -> Void in
let request = PHAssetChangeRequest(forAsset: asset)
request.contentEditingOutput = contentEditingOutput
}, completionHandler: { (success: Bool, error: NSError!) -> Void in
if !success {
NSLog("Error saving image: %@", error)
}
})