ios मैं स्विफ्ट में एक UIImage कैसे फसल कर सकता हूँ?




swift (2)

मैं स्विफ्ट में एक फ़ंक्शन लिखना चाहता हूं जो एक छवि लेता है और बीच में एक पतली क्षैतिज की तरह छोड़कर सब कुछ बाहर फसल देता है। मैं पहलू अनुपात को संरक्षित नहीं करना चाहता

यह मेरे पास अभी तक है, लेकिन यह जिस तरह से मैं चाहता हूँ उसे काम नहीं करता। मैं केवल y = 276 से y = 2 9 9 तक के पिक्सल को संरक्षित करना चाहता हूं।

func cropImageToBars(image: UIImage) -> UIImage {

  let rect = CGRectMake(0, 200, image.size.width, 23)

  UIGraphicsBeginImageContextWithOptions(rect.size, false, 1.0)
  image.drawInRect(rect)
  let newImage = UIGraphicsGetImageFromCurrentImageContext()
  UIGraphicsEndImageContext()

  return newImage

}


आपका कोड इस पीछे की ओर करता है UIImage drawInRect () विधि संपूर्ण छवि को लक्ष्य आयत में खींचती है। इसे फिल्म एन्लेंजर या स्लाइड प्रोजेक्टर के रूप में सोचें। आप बॉक्स के आकार और आकार को समायोजित करते हैं जिससे वह छवि को छवि में रेंडर कर देता है। आपने एक छवि संदर्भ सेट किया है जो एक ऐसी फिल्म की तरह है जो छवि का थोड़ा सा कब्जा करता है

आप आमतौर पर छवि को एक आयत में प्रस्तुत करना चाहते हैं जो छवि का पूर्ण आकार है, इसके मूल स्थान के साथ स्थानांतरित करना चाहते हैं ताकि 0 में मूल के साथ एक छवि का संदर्भ छवि के वांछित बिट को कैप्चर करता है

मेरे पास CropImg नामक एक डेमो प्रोजेक्ट है जो दर्शाता है कि किसी छवि का भाग कैसे फसल करना है। इसमें एक यूआई है जो उपयोगकर्ता को छवि का एक भाग चुनने देता है। आपका मामला सरल है, लेकिन यह आपको विचार देना चाहिए।


इस बारे में कैसा है

func cropImageToBars(image: UIImage) -> UIImage {

    let rect = CGRectMake(0, 200, image.size.width, 23)

    UIGraphicsBeginImageContextWithOptions(rect.size, false, 0)
    defer{
      UIGraphicsEndImageContext()
    }
   flipContextVertically(rect.size)

   let cgImage = CGImageCreateWithImageInRect(image.CGImage, rect)!
   return UIImage(CGImage: cgImage) 
}

func flipContextVertically(contentSize:CGSize){
    var transform = CGAffineTransformIdentity
    transform = CGAffineTransformScale(transform, 1, -1)
    transform = CGAffineTransformTranslate(transform, 0, -contentSize.height)

    CGContextConcatCTM(UIGraphicsGetCurrentContext(), transform)
}

संपादित करें UIKit से मिलान करने के लिए सीजी समन्वय फ्लिप।





uiimage