2014-07-25 10 views
16

UIImage flipping करने के लिए समाधान ऑब्जेक्टिव-सी कोड के साथ है:स्विफ्ट के साथ क्षैतिज UIImage कैसे फ़्लिप करें?

[UIImage imageWithCGImage:img.CGImage scale:1.0 orientation: UIImageOrientationDownMirrored] 

हालांकि, imageWithCGImage स्विफ्ट में उपलब्ध नहीं है! क्या स्विफ्ट के साथ क्षैतिज छवि को फ़्लिप करने का कोई समाधान है? धन्यवाद!

उत्तर

23

अधिकांश फैक्ट्री विधियों को तेज़ी से प्रारंभकर्ताओं में परिवर्तित कर दिया जाता है। जब भी उपलब्ध हो, भले ही कक्षा विधि अभी भी उपलब्ध हो, फिर भी उन्हें प्राथमिकता दी जाती है। आप उपयोग कर सकते हैं:

init(CGImage cgImage: CGImage!, scale: CGFloat, orientation: UIImageOrientation) 

उपयोग इस प्रकार दिखाई देगा:

var image = UIImage(CGImage: img.CGImage, scale: 1.0, orientation: .DownMirrored) 
+11

इसका प्रयास किया और यह छवि को फ़्लिप नहीं लग रहा है। प्रतिपादन करते समय अभिविन्यास का सम्मान करने का कोई तरीका है? 'सार्वजनिक विस्तार UIImage { \t वर flippedHorizontally: UIImage { \t \t वापसी UIImage (CGImage: self.CGImage !, पैमाने: self.scale, अभिविन्यास: .UpMirrored) \t} }' – Gujamin

+0

भयानक है, धन्यवाद! – RainCast

+0

ओह ... मैं सेल्फी फोटो के लिए .eftMirrored विकल्प का उपयोग कर रहा था। फ्लिपिंग के बाद फोटो प्रदर्शित करने के लिए यह अच्छी तरह से काम करता है। हालांकि, फोटो एलबम में सहेजने के बाद तस्वीर उल्टा है। कोई विचार? – RainCast

14

स्विफ्ट में .... (6.3.1)

YourUIImage.transform = CGAffineTransformMakeScale(-1, 1) 

यह भी एक UIView

साथ काम करता है
+27

यह 'UIImage' को फ़्लिप करने के लिए नहीं है, लेकिन 'UIImageView' फ़्लिप करने के लिए है। –

7

छवि अभिविन्यास पैरामीटर बदलना वास्तव में सभी मामलों में छवि को फ़्लिप नहीं कर रहा है। छवि किसी भी तरह इस तरह फिर से ताज़ा किया जाना चाहिए ... उदाहरण के लिए:

स्विफ्ट 3

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 
} 
0

स्विफ्ट 4

YOURIMAGEVIEW.transform = CGAffineTransform(scaleX: -1, y: 1) 
+0

प्रश्न UIImage के बारे में है, UIImageView नहीं –

1

मेरे लिए सबसे आसान तरीका .withHorizontallyFlippedOrientation() उदाहरण का इस्तेमाल किया गया UIImage की विधि निम्नानुसार है:

let flippedImage = straightImage.withHorizontallyFlippedOrientation()

सरल एक-लाइनर हमेशा मुझे खुश करते हैं :)

संबंधित मुद्दे