ios - সুইফ্ট পিএনজি চিত্রটি ভুল দিকনির্দেশ দিয়ে সংরক্ষণ করা হচ্ছে



swift uiimage (1)

আপনি যদি আপনার পিএনজিকে সঠিক রোটেশন দিয়ে সংরক্ষণ করতে চান তবে আপনার চিত্রটি যদি এটির পূর্বনির্ধারিত না হয় তবে এটি পুনরায় আঁকতে হবে .up আপনি নিম্নলিখিত হিসাবে এটি আবার অঙ্কন করতে পারেন:

extension UIImage {
    var png: Data? {
        guard let flattened = flattened else { return nil }
        return flattened.pngData()  // Swift 4.2 or later
        // return UIImagePNGRepresentation(flattened)  // Swift 4.1  or earlier
    }
    var flattened: UIImage? {
        if imageOrientation == .up { return self }
        UIGraphicsBeginImageContextWithOptions(size, false, scale)
        defer { UIGraphicsEndImageContext() }
        draw(in: CGRect(origin: .zero, size: size))
        return UIGraphicsGetImageFromCurrentImageContext()
    }
}

সম্পাদনা / আপডেট:

আইওএস 10 + টিভিওএস 10 + এর জন্য আপনি ইউআইজিগ্রাফিকস আইমেজ UIGraphicsImageRenderer ব্যবহার করতে পারেন:

extension UIImage {
    var png: Data? {
        return flattened.pngData()
    }
    var flattened: UIImage {
        if imageOrientation == .up { return self }
        return UIGraphicsImageRenderer(size: size, format: imageRendererFormat).image { _ in draw(at: .zero) }
    }
}
let image = UIImage(data: try! Data(contentsOf: URL(string: "https://i.stack.imgur.com/varL9.jpg")!))!
if let data = image.png {
    let imageFromPNGData = UIImage(data: data)
}

আমি যদি ছবিটি সংরক্ষণের আগে ব্যবহার করি তবে এটি স্বাভাবিক। তবে আমি যদি এটি সংরক্ষণ করি এবং পরে এটি ব্যবহার করি তবে 90 ডিগ্রি পরিণত হয়। আমি কীভাবে এটি নিশ্চিত করতে পারি যে এটি পাশের পাশে সংরক্ষণ করে না?

func saveEvent(_ center1: CLLocation, title2: String, imagePicked1: UIImage)
    {
        let data = UIImagePNGRepresentation(imagePicked1);///
        let url = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(NSUUID().uuidString+".dat")
        do {
            try data!.write(to: url!, options: [])
        } catch let e as NSError {
            print("Error! \(e)");
            return
        }
        let image11 = CKAsset(fileURL: url!)

        self.eventRecord.setObject(image11 as CKAsset, forKey: "Picture")
        let publicData = CKContainer.default().publicCloudDatabase
            publicData.save(self.eventRecord, completionHandler: { record, error in
                if error == nil
                {
                    print("Image saved")
                }else{
                    print(error!)
                }
        })
    }




uiimagepickercontroller