Mam UIImageView z UIImage. Chcę przypisać kopię tego obrazu do dwóch zmiennych. Na podstawie tego, co robi użytkownik, obraz powinien zostać zmanipulowany. Problem polega na tym, że obraz jest taki sam w każdej zmiennej. Chyba dlatego, że są przekazywane przez odniesienie.Jak skopiować UIImage?
let image1 = imageView.image!
let image2 = imageView.image!
Jak uzyskać dwie oddzielne kopie tego obrazu?
Dziękujemy!
Edit:
Co chcę osiągnąć: Wystarczy przyciąć jedno zdjęcie, należy pamiętać o innych podobnych oryginału.
let imageLeft = googleImageView.image!
let imageRef = CGImageCreateCopy(googleImageView.image!.CGImage)
let imageRight = UIImage(CGImage: imageRef!, scale: googleImageView.image!.scale, orientation: googleImageView.image!.imageOrientation)
if translation.x < 0 {
let scale = imageLeft.scale
let newRect = CGRectMake(0, 0, (imageLeft.size.width + translation.x) * scale, imageLeft.size.height * scale)
let imageRef = CGImageCreateWithImageInRect(imageLeft.CGImage, newRect)
if let croppedImage = imageRef {
googleImageView.image = UIImage(CGImage: croppedImage, scale: scale, orientation: imageLeft.imageOrientation)
}
}
print("left image: \(imageLeft) right image \(imageRight)")
Powyższy kod drukuje do konsoli:
left image: <UIImage: 0x7fd020dca070>, {111, 167}
right image <UIImage: 0x7fd020dda430>, {111, 167}
left image: <UIImage: 0x7fd020df9ba0>, {110, 167}
right image <UIImage: 0x7fd020d45670>, {110, 167}
... i tak dalej. Zarówno OBRAZY uzyskują nowy rozmiar. Tylko lewy obraz powinien zostać przycięty.
http://stackoverflow.com/a/6770387/3324388 – Aggressor