Как использовать этот цикл 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)
    }

Заранее спасибо!

0 ответов

Другие вопросы по тегам