मैं एक UIImage छवि को क्षैतिज रूप से फ़्लिप करने का प्रयास कर रहा हूं ताकि मैं इसे अपने फोटो एलबम में सहेज सकूं, सब कुछ ठीक काम कर रहा है और मैं छवि को फोटो एल्बम में सहेजने में सक्षम हूं लेकिन छवि हालांकि मेरे ऐप में फ़्लिप दिखाई देती है फोटो एलबम में फ़्लिप के रूप में सहेजा नहीं गया है। मैं छवि को फ़्लिप करने के लिए निम्न कोड का उपयोग कर रहा हूं:

myImage?.withHorizontallyFlippedOrientation()

नोट: मैं UIImageView को फ़्लिप करने का प्रयास नहीं कर रहा हूं, मैं छवि को फ़्लिप करने और इसे एक नए छवि चर में सहेजने का प्रयास कर रहा हूं और छवि को उस छवि चर से UIImageView पर असाइन कर रहा हूं।

पूरा आईबीएक्शन कोड:

@IBAction func horizontalFlipBtnPressed(_ sender: Any) {
    if myImageView.image != nil{
    let image = myImageView.image
    tempImage.append((image?.withHorizontallyFlippedOrientation())!)

    myImageView.image = tempImage.last



    }
    else{
        print ("there is no image selected")
    }
}

फोटो एलबम में सेव करने के लिए कोड:

if myImageView.image != nil{
        var image = myImageView.image
        let imageData = image!.pngData()
        let compressedImage = UIImage(data: imageData!)
        UIImageWriteToSavedPhotosAlbum(compressedImage!, nil, nil, nil)
        let alert = UIAlertController(title: "Saved", message: "Your image has been saved!", preferredStyle: .alert)
        let okAction = UIAlertAction(title: "Ok", style: .default, handler: nil)
        alert.addAction(okAction)
        self.present(alert, animated: true,completion: nil)

    }
1
ocean hancock 16 अक्टूबर 2018, 15:04

1 उत्तर

सबसे बढ़िया उत्तर

ऐप्पल के दस्तावेज़ों से:

छवि अभिविन्यास उस तरीके को प्रभावित करता है जिस तरह से खींचे जाने पर छवि डेटा प्रदर्शित होता है।

तो यह वास्तव में छवि डेटा को प्रभावित नहीं करता है।

यदि आप छवि के मेटाडेटा में "ओरिएंटेशन को फ़्लिप करना" चाहते हैं, तो आप .withHorizontallyFlippedOrientation() का उपयोग कर सकते हैं और फिर छवि को सहेज सकते हैं (इसे पीएनजी डेटा और बैक में अनुवाद करने के बजाय)।

यदि आप वास्तव में छवि डेटा (पिक्सेल) फ़्लिप करना चाहते हैं, तो आपको इसे फ़्लिप करना होगा और फिर उस छवि को सहेजना होगा। इसे करने का एक तरीका:

func flipImageLeftRight(_ image: UIImage) -> UIImage? {

    UIGraphicsBeginImageContextWithOptions(image.size, false, image.scale)
    let context = UIGraphicsGetCurrentContext()!
    context.translateBy(x: image.size.width, y: image.size.height)
    context.scaleBy(x: -image.scale, y: -image.scale)

    context.draw(image.cgImage!, in: CGRect(origin:CGPoint.zero, size: image.size))

    let newImage = UIGraphicsGetImageFromCurrentImageContext()

    UIGraphicsEndImageContext()

    return newImage
}
3
DonMag 16 अक्टूबर 2018, 13:35