我一直在使用这个 DKImagePickerController 一年,直到最近,我试图从相机胶卷上传到我的应用程序的多个图像显示为其中一个图像。即。我从我的相册中选择了三张图片,第三张图片上传了三张。我已经广泛调试并使用不同的方法来访问图像的数据。我在swift 3.2和4以及最新的beta版本上使用了3.8.1版本。 我会尽可能详细地介绍我在单独的测试会话中使用的内容 swift 3.2和4,DK版本4.0.0 beta2
let documentDirectory = try! FileManager().url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
for (i, asset) in assets.enumerated {
let imageName = "tapan\(i).png"
self.imgPathUrl = documentDirectory.appendingPathComponent(imageName)
//loop header is the same for the rest
asset.fetchOriginalImage(completeBlock: { (image, info) in
let newImg = self.resizeImage(image!, newWidth: self.view.frame.width) //changes size
let jpegData = UIImageJPEGRepresentation(newImg, 1)
do{
try jpegData?.write(to: self.imgPathUrl, options: .atomic)
}catch{
print("Write image to url failed ")
}
self.arrSelectedGalleryMedia.add(self.imgPathUrl)
if self.arrSelectedGalleryMedia.count >= assets.count{
SharedClass.sharedInstance.hideLoader()
self.addMedia() //add images
}
})
}
///在单独的循环中
asset.fetchImageData(completeBlock: {(data,info) in
do{
try data?.write(to: self.imgPathUrl, options: .atomic)
}catch{
print("Error\(error)")
}
self.arrSelectedGalleryMedia.add(self.imgPathUrl)
if self.arrSelectedGalleryMedia.count >= assets.count{
SharedClass.sharedInstance.hideLoader()
self.addMedia() //add images
}
})
Swift 3.2和4,DK版本3.8.1
`
asset.fetchOriginalImageWithCompleteBlock({ (image, info) in
let newImg = self.resizeImage(image!, newWidth: self.view.frame.width)
let jpegData = UIImageJPEGRepresentation(newImg, 1)
do{
try jpegData?.write(to: self.imgPathUrl, options: .atomic)
}catch{
print("Write image to url failed ")
}
self.arrSelectedGalleryMedia.add(self.imgPathUrl)
if self.arrSelectedGalleryMedia.count >= assets.count{
SharedClass.sharedInstance.hideLoader()
self.addMedia() //add images
}
})
` 我在3.8.1中使用了另一个函数,它直接将数据写入临时URL,并将链接存储在数组中。
问题似乎来自 getImageDataManager()。fetchImageData 。 就像在我提到的示例中一样 我可以看到资产已被收集但是当我遍历每个资产时,它会跳过前两个并在第三个图像上循环三次。 任何帮助将不胜感激......
答案 0 :(得分:0)
我使用了不同的库。 TLPhotoPicker。 DKImagePicker可能需要先解决问题。我早些时候在github开了一张票。希望他们能为他们的图书馆找到解决方案
extension addMediaViewController: TLPhotosPickerViewControllerDelegate{
func dismissPhotoPicker(withTLPHAssets: [TLPHAsset]) {
}
}