问题描述
我正在尝试保存使用视觉套件扫描的多张图像,但似乎仅使用共享表保存了第一张图像。我该如何解决这个问题。
扫描后保存图像
$( "#results-section" ).append( "Your data from the last API call" );
添加了popover控制器代码,因为iPad在调出共享表方面存在问题...
尝试保存多张图像时出现错误代码I
for i in 0...scan.pageCount-1 {
let originalImage = scan.imageOfPage(at: i)
let fixedImage = originalImage.jpegData(compressionQuality: 0.7)
let reloadedImage = UIImage(data: fixedImage!)
let imagetoshare = [reloadedImage!]
let activityViewController = UIActivityViewController(activityItems: imagetoshare,applicationActivities: nil)
if let popoverController = activityViewController.popoverPresentationController {
popoverController.sourceView = self.view
popoverController.sourceRect = CGRect(x: self.view.bounds.midX,y: self.view.bounds.midY,width: 0,height: 0)
popoverController.permittedArrowDirections = []
}
// exclude some activity types from the list (optional)
// present the view controller
self.present(activityViewController,animated: true,completion: nil)
}
如果您想知道reloadedImage函数是什么:
2020-10-03 16:17:21.300830+0530 Scan Box[1163:132306] [ShareSheet] connection invalidated
编辑: 我已从pageCount中删除了“ -1”,并且出现此错误:
func reloadedImage(_ originalImage: UIImage) -> UIImage {
guard let imageData = originalImage.jpegData(compressionQuality: 1),let reloadedImage = UIImage(data: imageData) else {
return originalImage
}
return reloadedImage
}
编辑2:
-[VNDocumentCameraScan imageOfPageAtIndex:]: index (2) beyond bounds (2).'
我什至尝试:
var imagetoShare = [UIImage]()
for i in 0...scan.pageCount-1 {
let originalImage = scan.imageOfPage(at: i)
let fixedImage = originalImage.jpegData(compressionQuality: 0.7)
let reloadedImage = UIImage(data: fixedImage!)
imagetoShare.append(reloadedImage!)
let activityViewController = UIActivityViewController(activityItems: imagetoShare,applicationActivities: nil)
if let popoverController = activityViewController.popoverPresentationController {
popoverController.sourceView = self.view
popoverController.sourceRect = CGRect(x: self.view.bounds.midX,height: 0)
popoverController.permittedArrowDirections = []
}
// exclude some activity types from the list (optional)
// present the view controller
self.present(activityViewController,completion: nil)
但仍然没有运气
这些更改之后,我的调试器日志将显示,
imagetoShare: [UIImage] = [UIImage]()
请帮助我解决此问题。 预先感谢!
解决方法
您创建了一堆UIActivityViewController来显示代码中的循环,因此仅显示第一个,因为跳过了下一个。 您应该先创建要共享的图像数组,然后再使用该数组显示控制器。
// Prepare array of images to share
var images = [UIImage]()
for i in 0...scan.pageCount-1 {
...
images.append(reloadedImage!)
}
// Create and present single activity controller
let activityViewController = UIActivityViewController(activityItems: images,applicationActivities: nil)
...
self.present(activityViewController,animated: true,completion: nil)