ich CGImageCreateWithImageInRect in Swift bin mit einer Kopie eines Teils eines Bildes an der Berührungsstelle zu schaffen.CGImageCreateWithImageInRect das Abschneiden
Mein Code funktioniert gut, außer wenn der Benutzer den Rand des Bildschirms und die rect Größe fällt nicht in den Ansichtsrahmen. Anstatt ein Quadrat zurückzugeben, gibt es ein Rechteck zurück (ich nehme an), dass die Menge, die außerhalb der Ansicht liegt, abgeschnitten wird. Die Änderung ist, dass die Form die Position des kopierten Bilds verlässt, sodass sie nicht mit dem unteren Bild übereinstimmt.
Wie halte ich die quadratische Form/Größe und die Grenzen ignorieren, so meine Bilder ausrichten? Hier
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let touch = touches.first!.locationInView(mainImageView?.superview)
UIGraphicsBeginImageContext(self.view.bounds.size)
UIApplication.sharedApplication().keyWindow!.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let screenshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
let crop = CGRectMake(touch.x - CGFloat(brushWidth)/2, touch.y - CGFloat(brushWidth)/2, CGFloat(brushWidth), CGFloat(brushWidth))
let imageRef = CGImageCreateWithImageInRect(screenshot.CGImage, crop)
if imageRef != nil {
let newImage: UIImage = UIImage(CGImage: imageRef!, scale: mainImageView.image!.scale, orientation: mainImageView.image!.imageOrientation)
let bgImage = UIImageView(image: processedImage)
bgImage.center = touch
self.view.addSubview(bgImage)
}
}
}
}
ist ein Beispiel davon arbeiten:
Hier ist ein Beispiel für den Image Warping, weil ich in der Nähe der Kante berühren:
Könnten Sie einfach überprüfen, ob die Berührung außerhalb des Bildes auftritt, und es ignorieren, wenn es tut? – BallpointBen
Es ist eine kluge Idee. Ich habe darüber nachgedacht, aber technisch ist die Berührung innerhalb des Bildes. Ein Teil des Rect fällt einfach nach draußen und ich möchte dem Benutzer immer noch die Möglichkeit geben zu beschneiden, wenn sie sich in der Nähe der Kante berühren. – user4812000
Sinn macht. Weißt du, warum das gelbe Rechteck im zweiten Bild verschobene Bilddaten enthält? Sie können sehen, dass das Originalbild und das Originalbild ausgerichtet sind, wenn Sie das Rechteck nach links verschoben haben. – BallpointBen