2016-04-03 3 views
0

Ich versuche, einen Platz UIImage in 36 Bilder zu teilen (6x6 Rahmen)Swift 2.2 - Split UIImage von 6X6 small Bilder

Um das Bild zu teilen ich eine Verlängerung der UIImage bin mit, dass das Bild in zwei Hälften teilen Ich finde jedoch nicht den Weg, um die Bilder in das Raster zu bringen.

Gibt es einen einfachen Weg, dies zu tun?

extension UIImage { 
    var topHalf: UIImage { 
     return UIImage(CGImage: CGImageCreateWithImageInRect(CGImage, CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: size.width, height: size.height/2)))!, scale: 1, orientation: imageOrientation) 
    } 
    var bottomHalf: UIImage { 
     return UIImage(CGImage: CGImageCreateWithImageInRect(CGImage, CGRect(origin: CGPoint(x: 0, y: CGFloat(Int(size.height)-Int((size.height/2)))), size: CGSize(width: size.width, height: CGFloat(Int(size.height)-Int((size.height/2))))))!, scale: 1, orientation: imageOrientation) 
    } 
    var leftHalf: UIImage { 
     return UIImage(CGImage: CGImageCreateWithImageInRect(CGImage, CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: size.width/2, height: size.height)))!, scale: 1, orientation: imageOrientation) 
    } 
    var rightHalf: UIImage { 
     return UIImage(CGImage: CGImageCreateWithImageInRect(CGImage, CGRect(origin: CGPoint(x: CGFloat(Int(size.width)-Int((size.width/2))), y: 0), size: CGSize(width: CGFloat(Int(size.width)-Int((size.width/2))), height: size.height)))!, scale: 1, orientation: imageOrientation) 
    } 
} 

enter image description here

Antwort

1

Sie möchten ein 6/6 Raster von Bildern. Der Code, den Sie haben, teilt ein Bild in zwei Hälften. Du kannst keine 1/6tel aus Hälften bekommen. Sie müssen den Code ändern, um Ihnen 6ths zu geben. Ich schlage vor, Sie eine Methode schreiben, die als Parameter verwendet:

  • A UIImage.
  • Eine Gesamtzahl der Zeilen
  • Eine Gesamtzahl der Spalten
  • Zeilenindex
  • A Spaltenindex

und eine Bildposition in diesem Raster zurückkehrt. Es würde etwas Mathe erfordern, um den Ursprung und die Größe des Rechtecks ​​für diese Rasterposition zu berechnen, und dann CGImageCreateWithImageInRect verwenden, um das fragliche Bild zu extrahieren.

+0

danke, ich finde ein bisschen schwierig, die Mathe dafür zu tun. Ich habe es geschafft, die erste Spitze zu finden mit 'var topLeft1: UIImage { Rückgabe UIImage (CGImage: CGImageCreateWithImageInRect (CGImage, CGRect (Herkunft: CGPoint (x: 0, y: 0), Größe: CGSize (width: size.width/6 , height: size.height/6))) !, scale: 1, orientation: imageOrientation) } 'aber ich finde den Weg nicht, den nächsten zu bekommen – SNos

+0

Ich fand das http://stackoverflow.com/questions/25607688/ ios-how-to-split-ein-uiimage-in-parts .. Vielleicht wird es funktionieren, wenn ich es zu schnell ändern – SNos