Skip to content

Instantly share code, notes, and snippets.

@ryondev
Created February 11, 2018 09:49
Show Gist options
  • Select an option

  • Save ryondev/eeb730dbe380b84e1c5eaa8ca19248ad to your computer and use it in GitHub Desktop.

Select an option

Save ryondev/eeb730dbe380b84e1c5eaa8ca19248ad to your computer and use it in GitHub Desktop.

Revisions

  1. ryondev created this gist Feb 11, 2018.
    38 changes: 38 additions & 0 deletions resizeImage
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,38 @@
    func resizeImage(with buffer: CMSampleBuffer) {
    let pixel = CMSampleBufferGetImageBuffer(buffer)
    guard let pixelBuffer = pixel else { return }

    CVPixelBufferLockBaseAddress(pixelBuffer, CVPixelBufferLockFlags(rawValue: 0))
    let baseAddress = CVPixelBufferGetBaseAddress(pixelBuffer)
    let bytesPerRow = CVPixelBufferGetBytesPerRow(pixelBuffer)

    var inputBuffer = vImage_Buffer()
    inputBuffer.height = inputHeight
    inputBuffer.width = inputWidth
    inputBuffer.rowBytes = bytesPerRow
    inputBuffer.data = baseAddress

    let outImg = UnsafeMutablePointer<u_char>.allocate(capacity: Int(4*inputWidth*inputHeight))
    var outputBuffer: vImage_Buffer = vImage_Buffer.init(data: outImg, height: inputHeight, width: inputWidth, rowBytes: Int(4*inputWidth))
    var err: vImage_Error = vImageScale_ARGB8888(&inputBuffer, &outputBuffer, nil, 0)
    guard err != kvImageNoError else {
    print("error: \(err)")
    return
    }
    var format = vImage_CGImageFormat.init(bitsPerComponent: 8,
    bitsPerPixel: 32,
    colorSpace: nil,
    bitmapInfo: CGBitmapInfo.init(rawValue: CGImageAlphaInfo.first.rawValue),
    version: 0,
    decode: nil,
    renderingIntent: .defaultIntent)

    let destRef = vImageCreateCGImageFromBuffer(&outputBuffer,
    &format,
    nil,
    nil,
    vImage_Flags(kvImageNoFlags),
    &err)


    }