【问题标题】:How to draw text into CIImage?如何将文本绘制到 CIImage 中?
【发布时间】:2018-08-09 11:19:54
【问题描述】:

如何绘制到CIImage(或者可能是CVPixelBuffer,但我想将文本添加到CIImage 更容易)? 不是 UIImage

我使用AVAssetWriterCMSampleBuffer(来自视频、音频输入)录制视频(.mp4 文件)。录制时我想在视频帧上添加文本,我已经将CMSampleBuffer 转换为CIImage,现在我需要以某种方式将文本添加到CIImage 并转换回CVPixelBuffer。我真的没有在 Swift 中找到任何简单的示例,如何向CIImage 添加(绘制)文本或添加任何其他内容(如线条、矩形,而不仅仅是文本)。

/// encode video buffer
func appendVideoSampleBuffer(_ sampleBuffer: CMSampleBuffer) {

    // before encoding video frames into a file I would like process it
    // 1. convert CMSampleBuffer to ciImage

    let cvPixelBuffer: CVPixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)!
    let ciimage : CIImage = CIImage(cvPixelBuffer: cvPixelBuffer)

    // 2. do something with CIImage


    // 3. convert CIImage back to CMSampleBuffer

    let sampleBufferWithText == ...


    appendSampleBuffer(sampleBufferWithText, ofMediaType: AVMediaType.video.rawValue)
}

/// encode audio buffer
func appendAudioSampleBuffer(_ sampleBuffer: CMSampleBuffer) {
    appendSampleBuffer(sampleBuffer, ofMediaType: AVMediaType.audio.rawValue)
}

【问题讨论】:

  • 点击此链接,可能会对您有所帮助:stackoverflow.com/questions/28906914/…
  • @PaulMarshal 是关于将文本添加到 UIImage 而不是 CIImageCVPixelBuffer
  • 您的问题,在标题和问题中都使用了CIImage,这让我很困惑——您是想将文本添加到CIImage 还是UIImage?因此,假设您在谈论CIImage,有两件事:(1) 了解CIImage 不是 图像- 它是图像的配方。 (2)有几个CIFilters you could use to (a) create a UILabel`里面有文字,然后(b)把它变成CIImage与第一个结合。
  • @dfd 在我的问题中我只使用CIImage,所以我不明白为什么它会让你感到困惑。
  • @dfd Paul Marshal 给了我一个与 UIImage 相关的问题的链接,之后我更新了我的问题,添加了not to UIImage(这里我的意思是我不想将其转换为 UIImage,而是转换为 CIImage,我希望它是 CIImage)

标签: ios swift avassetwriter ciimage cvpixelbuffer


【解决方案1】:

您可以为文本创建 NSAttributedString -> 将此字符串绘制到 cgContext -> 转换 UIImage/CGImage -> CIImage

【讨论】:

    猜你喜欢
    • 2016-12-05
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多