斯威夫特:核心数据在90度载入我的图像(人像)

问题描述 投票:0回答:2

当我保存,我到coreData,图像,当我从CoreData,谁是参加了所有的人像图像重新打开它,在横向方向。

我资助很多预览质疑一个回合,但所有的目标C不是斯威夫特。

我该如何解决这一问题?

这是我的代码:(它也是一个文本应用程序时,它的工作,我将它添加到我的项目)

本文应用具有装载从库从coreData同时加载两个图像视图一个又一个。

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate{

    var monimage: String!

        let imagePicker = UIImagePickerController()

    @IBOutlet weak var MaPhoto: UIImageView? = UIImageView()
    @IBOutlet weak var maPhoto2: UIImageView! = UIImageView()

    var cameraUI:UIImagePickerController = UIImagePickerController()
    var yourContacts:NSMutableArray = NSMutableArray()

    override func viewDidLoad() {

      imagePicker.delegate = self

        super.viewDidLoad()

    }

    @IBAction func LabraryImage(sender: AnyObject) {

        imagePicker.delegate = self
        imagePicker.sourceType = .PhotoLibrary
        imagePicker.allowsEditing = true

        presentViewController(imagePicker, animated: true, completion: nil)

    }

    func imagePickerControllerDidCancel(picker: UIImagePickerController) {
        dismissViewControllerAnimated(true, completion: nil)
    }

    @IBAction func takePhoto(sender: UIButton) {

        if (UIImagePickerController.isSourceTypeAvailable(.Camera)){

            cameraUI = UIImagePickerController()
            cameraUI.delegate = self
            cameraUI.sourceType = UIImagePickerControllerSourceType.Camera
            cameraUI.allowsEditing = true

            self.presentViewController(cameraUI, animated: true, completion: nil)

        }else{
            //no camera available
            let alert = UIAlertController(title: "Error", message: "There is no camera available", preferredStyle: .Alert)
            alert.addAction(UIAlertAction(title: "Okay", style: .Default, handler: {(alertAction)in
                alert.dismissViewControllerAnimated (true, completion: nil)
            }))
        }

    }

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
        if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
            MaPhoto!.contentMode = .ScaleAspectFit
            MaPhoto!.image = pickedImage
        }

        dismissViewControllerAnimated(true, completion: nil)
    }

    @IBAction func btnSavePressed(sender : AnyObject) {

        let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        let context:NSManagedObjectContext = appDel.managedObjectContext!

        let ent = NSEntityDescription.entityForName("ImageData", inManagedObjectContext: context)

        var newUser = ImageData (entity: ent!, insertIntoManagedObjectContext: context)

          let contactImageData:NSData = UIImagePNGRepresentation(MaPhoto!.image)

            newUser.monimage = contactImageData

            context.save(nil)
      self.navigationController?.popViewControllerAnimated(true)   
    }

    @IBAction func loadImage(sender: AnyObject){

        let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        let context:NSManagedObjectContext = appDel.managedObjectContext!

        let request2 = NSFetchRequest (entityName: "ImageData")
        request2.returnsObjectsAsFaults = false;

        var results2:NSArray = context.executeFetchRequest(request2, error: nil)!

        if results2.count > 0 {
            for user in results2{
                var thisUser2 = user as! ImageData


        let profileImage:UIImage = UIImage(data: thisUser2.monimage)!

                maPhoto2.image = profileImage

            }
        }

    }

我也努力让图像平方所以它是针对“allowEditing是=真”

swift core-data uiimagepickercontroller
2个回答
0
投票

谢谢你的帮助!

这是回答我的问题:

@IBAction func btnSavePressed(sender : AnyObject) {
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let managedContext = appDelegate.managedObjectContext!
    let entity = NSEntityDescription.entityForName("ImageData",
        inManagedObjectContext: managedContext)
    let options = NSManagedObject(entity: entity!,
        insertIntoManagedObjectContext:managedContext)

    var newImageData = UIImageJPEGRepresentation(MaPhoto!.image,1)

    options.setValue(newImageData, forKey: "monimage")

    var error: NSError?
    managedContext.save(&error)

}


0
投票

JPG格式是伟大的照片。然而,节省JPEG可能会宽松一些质量这PNG往往出类拔萃,因为它有一种无损压缩格式。

它只是喜好的问题,你需要在看什么。如果你不想转换为JPG格式,你可以调用此方法,然后转换为pngData保存到coreData面前保持方向。 :)

func rotatedCopy() -> UIImage {
    if self.imageOrientation == UIImage.Orientation.up {
        return self
    }

    UIGraphicsBeginImageContext(size)

    //draws the image in current context respecting orientation
    draw(in: CGRect(origin: CGPoint.zero, size: size))

    let copy = UIGraphicsGetImageFromCurrentImageContext()

    UIGraphicsEndImageContext()

    return copy!
}
© www.soinside.com 2019 - 2024. All rights reserved.