📌
SwiftでUIImageからMlxArrayを作る
意外にすぐやり方見つからなかったので
func toMlxArray(image:UIImage)throws{
guard let cgImage = image.cgImage else {
fatalError("Invalid Image")
}
var cgImageFormat = vImage_CGImageFormat(
bitsPerComponent: 8,
bitsPerPixel: 32,
colorSpace: Unmanaged.passUnretained(CGColorSpaceCreateDeviceRGB()),
bitmapInfo: CGBitmapInfo(
rawValue: CGImageAlphaInfo.last.rawValue
| CGBitmapInfo.byteOrder32Big.rawValue
),
version: 0,
decode: nil,
renderingIntent: .defaultIntent
)
let pixelBuffer = try vImage.PixelBuffer<vImage.Interleaved8x4>(
cgImage: cgImage,
cgImageFormat: &cgImageFormat
)
let width = pixelBuffer.width
let height = pixelBuffer.height
let mlxArray = pixelBuffer.withUnsafeBufferPointer { ptr in
MLXArray(ptr, [height, width, 4])
}
}
Discussion