Как использовать этот цикл for для сохранения нескольких привязанных изображений?
Я пытаюсь создать приложение, которое использует комплект Vision для сканирования нескольких документов, а затем сохраняет эти изображения в формате PDF. Я пытаюсь использовать цикл for для сохранения нескольких привязанных изображений.
Приведенный ниже код вызывает интерфейс сохранения файла, когда код сохраняет одно изображение.
func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFinishWith scan: VNDocumentCameraScan) {
// Make sure the user scanned at least one page
guard scan.pageCount >= 1 else {
// You are responsible for dismissing the VNDocumentCameraViewController.
controller.dismiss(animated: true)
return
}
// This is a workaround for the VisionKit bug which breaks the `UIImage` returned from `VisionKit`
// See the `Image Loading Hack` section below for more information.
let originalImage = scan.imageOfPage(at: 0)
let fixedImage = reloadedImage(originalImage)
// You are responsible for dismissing the VNDocumentCameraViewController.
controller.dismiss(animated: true)
// Process the image
processImage(fixedImage)
let documentDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let docURL = documentDirectory.appendingPathComponent("ScannedImage.pdf")
try createPDF(image: fixedImage)?.write(to: docURL, atomically: true)
}
Это функции, используемые в приведенном выше коде (если вам это нужно)
func reloadedImage(_ originalImage: UIImage) -> UIImage {
guard let imageData = originalImage.jpegData(compressionQuality: 1),
let reloadedImage = UIImage(data: imageData) else {
return originalImage
}
return reloadedImage
}
func createPDF(image: UIImage) -> NSData? {
let pdfData = NSMutableData()
let pdfConsumer = CGDataConsumer(data: pdfData as CFMutableData)!
var mediaBox = CGRect.init(x: 0, y: 0, width: image.size.width, height: image.size.height)
let pdfContext = CGContext(consumer: pdfConsumer, mediaBox: &mediaBox, nil)!
pdfContext.beginPage(mediaBox: &mediaBox)
pdfContext.draw(image.cgImage!, in: mediaBox)
pdfContext.endPage()
let activityViewController = UIActivityViewController(activityItems: [pdfData], applicationActivities: nil)
present(activityViewController, animated: true, completion: nil)
return pdfData
}
Я пытаюсь использовать этот цикл For для сохранения нескольких сканирований. Приложение не вылетает, но всплывающий интерфейс для сохранения файла больше не появляется....
Мне пришлось поместить следующий код в цикл for, иначе он вызвал ошибки.
for i in 0 ..< scan.pageCount {
let originalImage = scan.imageOfPage(at: i)
fixedimage = reloadedimage(originalImage)
processImage(fixedimage)
let documentDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let docURL = documentDirectory.appendingPathComponent("ScannedImage.pdf")
try createPDF(image: fixedImage)?.write(to: docURL, atomically: true)
}
Заранее спасибо!