ios - 将相机图像抖动到 swift UIimage

标签 ios swift flutter dart ios-camera

我正在开发一个自定义 flutter 插件,我将 flutter 图像相机发送到 swift 并使用 flutter 相机插件( https://pub.dev/packages/camera )创建一个 UIImage 。
为此,我使用此方法发送相机图像字节:

startImageStream((CameraImage img) {
    sendFrameBytes(bytesList: img.planes.map((plane) {
        return plane.bytes;
    }).toList(),
)}
平面包含一个数组,其中包含图像的 RGBA 字节。
在 swift 代码中,我将 RGBA 字节作为 NSArray 并创建一个像这样的 UIImage:
func detectFromFrame1(args:NSDictionary, result:FlutterResult){
    var rgbaPlan = args["bytesList"] as! NSArray
    let rgbaTypedData = rgbaPlan[0] as! FlutterStandardTypedData
    let rgbaUint8 = [UInt8](rgbaTypedData.data)
    let data = NSData(bytes: rgbaUint8, length: rgbaUint8.count)
    let uiimage = UIImage(data: data as Data)
    print(uiimage)
}
问题是rgbaTypedData,rgbaUint8,data不为空,创建的uiimage总是nil,不明白问题出在哪里。

最佳答案

我有同样的问题。我使用的一种解决方法是在 flutter 中将图像转换为 jpg 并获取并将字节提供给 iOS/ native 代码。
缺点是它很慢而且不能用于实时使用
更新:
代码示例(Flutter & TFLite 包)
套餐:
https://pub.dev/packages/image
https://pub.dev/packages/tflite
代码:

     _cameraController.startImageStream((_availableCameraImage)
      {
        imglib.Image img = imglib.Image.fromBytes(_availableCameraImage.planes[0].width, _availableCameraImage.planes[0].height, _availableCameraImage.planes[0].bytes);
         Uint8List imgByte = imglib.encodeJpg(img);
        Tfliteswift.detectObjectOnBinary(binary: _availableCameraImage.planes[0].bytes);
}

关于ios - 将相机图像抖动到 swift UIimage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57828792/

相关文章:

swift - 如何从 Evernote Swift SDK 中的笔记中取消标记?

dart - 调用 setState 时防止 ExpansionTile 重置

flutter - 抽象类不能被实例化!在身份验证 block 中

ios - 数组追加会覆盖 Realm 对象的最后一个索引

swift - 下标使用不明确(Swift 3)

swift 2 : Table view cellForRowAtIndexPath - BAD_EXEC

android - LoadAdError(代码 : 3, 域 : com. google.android.gms.ads,消息 : No ad config. .. 尝试在 Release模式下加载 BannerAd

iphone - 调用单例类以保持套接字连接打开

ios - Swift 加速度计数据不更新 UILabel 阴影

ios - React Native "No bundle URL present"仅 Release模式