如何向 CIImage 添加文本?

Jor*_*n H 5 core-image cgimage ios ciimage swift

我正在使用照片框架,并创建了一个将滤镜应用于图像的应用程序。现在,我不想应用过滤器,而是想在图像顶部添加文本。这个 API 为我提供了一个CIImage可以用来创建输出的 API CIImage。我只是不知道如何将特定位置的文本添加到CIImage. CGImage如果我是正确的,由于性能下降,不建议将其转换为 a然后添加文本。

如何使用现有的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)
    }
})
Run Code Online (Sandbox Code Playgroud)

use*_*321 4

您可以将灰度文本绘制为单独的CGImage,将其转换CGImage为 a CIImage(通过[+CIImage imageWithCGImage:]),然后将其用作掩码,将其和原始文本发送CIImageCIBlendWithMask过滤器。

  • 迅速的任何例子? (3认同)