我有一個項目,我正在使用Xcode7
和Swift 2
。我有一個ViewController
,允許用戶用他們的設備相機拍照。然後它將拍攝的照片加載到UIImageView
中,他們可以將照片郵寄給PDF
。用戶拍攝的照片不能轉換爲PDF使用斯威夫特2
拍照時,我有一個UIBarButtonItem
用的Action
代碼:
@IBAction func takeScan(sender: UIBarButtonItem) {
var image = UIImagePickerController()
image.delegate = self
image.sourceType = UIImagePickerControllerSourceType.Camera
image.allowsEditing = false
self.presentViewController(image, animated: true, completion: nil)
}
我也有什麼用之後的圖像發生代碼:
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
// Dismiss imagePickerController
self.dismissViewControllerAnimated(true, completion: nil)
// Set the View Controller image to taken photo
scannedPhoto.image = image
}
我有一個UIButton
將該照片作爲PDF
附件發送。它提示用戶爲PDF
鍵入文件名,並存儲該名稱的variable
:
let nameText = nameSaveAlert.textFields![0]
// AUTO CAPITALIZE Input Alert Text
// Create a String
var textConvert = ""
// Set string to inputed text from user
textConvert = nameText.text!
// Creat NSString that takes the above string and capitalizes it
let capsWord: NSString = textConvert.capitalizedString
// Assign the capitalized name to variable for use
let pdfFileName = capsWord as String
// Convert image to data to be saved using JPG data and 90%
let imageData = UIImageJPEGRepresentation(self.scannedRecipe.image!, 0.9)
// PDF Work
let pdfWidth = self.scannedPhoto.bounds.width
let pdfHeight = self.scannedPhoto.bounds.height
let pdfData = imageData as! NSMutableData
UIGraphicsBeginPDFContextToData(pdfData, CGRect(x: 0, y: 0, width: pdfWidth, height: pdfHeight), nil)
let context = UIGraphicsGetCurrentContext()
UIGraphicsBeginPDFPage()
self.view.layer.renderInContext(context!)
UIGraphicsEndPDFContext()
它然後打開郵件應用程序,並創建與PDF
作爲附件的電子郵件。我可以發送它。問題是,它似乎在拍攝UIImage
尺寸的屏幕截圖,並將該圖像保存爲PDF
,而不是拍攝用戶拍攝的實際圖像。爲什麼?我是Swift
新手,特別是Swift 2
,所以請和我一起裸照。我的目標是讓用戶拍下照片並將其轉換爲PDF
並作爲附件寄出。謝謝。
更新: 我改變了我的代碼看起來像這樣的PDF
部分作爲建議:
let pdfWidth = self.scannedPhoto.bounds.width
let pdfHeight = self.scannedPhoto.bounds.height
let pdfData = imageData as! NSMutableData
UIGraphicsBeginPDFContextToData(pdfData, CGRect(x: 0, y: 0, width: pdfWidth, height: pdfHeight), nil)
let context = UIGraphicsGetCurrentContext()
// Convert scannedPhoto to a type UIImage
var imageConvert = self. scannedPhoto.image! as UIImage
UIGraphicsBeginPDFPage()
UIGraphicsPushContext(context!)
imageConvert.drawAtPoint(CGPointZero)
UIGraphicsPopContext()
UIGraphicsEndPDFContext()
新的問題是,在圖像的我只是一個小左上角現在爲PDF
。我如何得到整個畫面?我認爲設置width
和height
變量基於UIImage
會做到這一點。
我用你的建議更新了我的代碼。現在我只能拍攝照片的小角落,如PDF。 – ChallengerGuy
@ChallengerGuy查看我更新的帖子。你的代碼中有一些不幸的情況,我認爲這會導致你的問題。 – Mrwerdo
你說的話很有道理。我做了一些調整,但它完美運作。 PDF的文件大小在2.3MB的情況下也比我最初做的小部分照片上的7.8MB的PDF要好。我非常感謝你的幫助。謝謝。 – ChallengerGuy