簡體   English   中英

SDK DJI快速下載照片

[英]SDK DJI download photo in swift

我只是試圖從我的DJI無人機下載最新的訪問提要,並將提要轉換為UIImage。 我認為可以完成的最簡單方法是拍攝照片,然后迅速從存儲設備中下載最新照片。 我將在下面的存儲代碼中添加下載內容。 這是最簡單的方法嗎? 我一直收到此錯誤代碼-

Settings parameters operation failed. (Code : -1007)

我已經研究過了,但找不到它的意思-DJI文檔僅限於幾乎所有obj-c。 這里的代碼-

@IBAction func download(_ sender: UIButton) {
    let camera = self.fetchCamera()

    // switch camera mode to allow for media downloads
    camera?.setMode(DJICameraMode.mediaDownload, withCompletion: {(error) in
        if error != nil {
            self.status.text="\(error!.localizedDescription)"
        }
        else {

            // get the media manager from the drone to gain access to the files
            let manager = camera!.mediaManager!

                if error != nil {
                    self.status.text = "State: \(manager.sdCardFileListState.rawValue)"
                    self.status.text = "Error refreshing list: \(error)"

                }
                else {
                    print("Refreshed file list")
                    print("State: \(manager.sdCardFileListState.rawValue)")


                    guard let files = manager.sdCardFileListSnapshot() else {
                        self.status.text = ("No files to download")
                        return
                    }

                    self.status.text = "There are files to download"

                    var images: [UIImage] = []

                    for file in files {

                        if file.mediaType == .JPEG {

                            self.status.text = ("Time created: \(file.timeCreated)")

                            DispatchQueue.main.asyncAfter(deadline: .now() + 1) {

                                file.fetchData(withOffset: 0, update: DispatchQueue.main, update: {(_ data: Data?, _ isComplete: Bool, _ error: Error?) -> Void in

                                    if error != nil {
                                        self.status.text = "State: \(manager.sdCardFileListState.rawValue)"
                                        self.status.text = "Error downloading photo: \(error!)"
                                    }
                                    else {
                                        // unwrap downloaded data and create image
                                        if let data = data, let downloadedImage = UIImage(data: data) {
                                            self.status.text = "Image was downloaded!"
                                            images.append( downloadedImage )
                                        }
                                    }

                                }) // end of filedata fetch

                            }

                        }

                    } // end of loop


                }

        }

    })// end of camera setMode block

}` 

任何幫助將不勝感激-謝謝

@IBAction func download(_ sender: UIButton) {
    let camera = self.fetchCamera()

// switch camera mode to allow for media downloads
camera?.setMode(DJICameraMode.mediaDownload, withCompletion: {(error) in
    if error != nil {
        self.status.text="\(error!.localizedDescription)"
    }
    else {

        // get the media manager from the drone to gain access to the files
        let manager = camera!.mediaManager!

            if error != nil {
                self.status.text = "State: \(manager.sdCardFileListState.rawValue)"
                self.status.text = "Error refreshing list: \(error)"

            }
            else {
                print("Refreshed file list")
                print("State: \(manager.sdCardFileListState.rawValue)")

                while(manager.internalStorageFileListState != .UpToDate) {
                    // Do nothing...
                }
                guard let files = manager.sdCardFileListSnapshot() else {
                    self.status.text = ("No files to download")
                    return
                }

                self.status.text = "There are files to download"

                var images: [UIImage] = []

                for file in files {

                    if file.mediaType == .JPEG {

                        self.status.text = ("Time created: \(file.timeCreated)")

                        DispatchQueue.main.asyncAfter(deadline: .now() + 1) {

                            file.fetchData(withOffset: 0, update: DispatchQueue.main, update: {(_ data: Data?, _ isComplete: Bool, _ error: Error?) -> Void in

                                if error != nil {
                                    self.status.text = "State: \(manager.sdCardFileListState.rawValue)"
                                    self.status.text = "Error downloading photo: \(error!)"
                                }
                                else {
                                    // unwrap downloaded data and create image
                                    if let data = data, let downloadedImage = UIImage(data: data) {
                                        self.status.text = "Image was downloaded!"
                                        images.append( downloadedImage )
                                    }
                                }

                            }) // end of filedata fetch
                        }
                    }

                } // end of loop
            }
    }

})// end of camera setMode block
}

為什么不重寫“生成的新文件”的回調,然后在那里下載文件

func camera(_ camera: DJICamera, didGenerateNewMediaFile newMedia: DJIMediaFile) {
     newMedia.fetchData(withOffset: 0, update: DispatchQueue.main, update: {(_ data: Data?, _ isComplete: Bool, _ error: Error?) -> Void in

                            if error != nil {
                                self.status.text = "State: \(manager.sdCardFileListState.rawValue)"
                                self.status.text = "Error downloading photo: \(error!)"
                            }
                            else {
                                // unwrap downloaded data and create image
                                if let data = data, let downloadedImage = UIImage(data: data) {
                                    self.status.text = "Image was downloaded!"
                                    images.append( downloadedImage )
                                }
                            }

                        }) // end of filedata fetch


}

您將必須實現“ DJICameraDelegate”類,並在ViewController中設置委托。 希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM