gpt4 book ai didi

swift - 如何复制 UIImage?

转载 作者:IT王子 更新时间:2023-10-29 05:30:03 29 4
gpt4 key购买 nike

我有一个带有 UIImageUIImageView。我想将这些图片的副本分配给两个变量。根据用户的操作,应该对图像进行操作。问题是,图像在每个变量中都是相同的。我猜,因为它们是通过引用传递的。

let image1 = imageView.image!
let image2 = imageView.image!

如何获得此图片的两个单独副本?

我想要实现的目标:只裁剪一张图片,另一张保持原样。

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)")

上面的代码打印到控制台:

left image: <UIImage: 0x7fd020dca070>, {111, 167} 
right image <UIImage: 0x7fd020dda430>, {111, 167}
left image: <UIImage: 0x7fd020df9ba0>, {110, 167}
right image <UIImage: 0x7fd020d45670>, {110, 167}

...等等。因此,两个图像都获得了新的尺寸。只有左边的图像应该被裁剪。

最佳答案

正如@Aggressor 建议的那样,您可以通过这种方式从 imageView 复制图像:

let newCgIm = CGImageCreateCopy(imageView.image?.CGImage)
let newImage = UIImage(CGImage: newCgIm, scale: imageView.image!.scale, orientation: imageView.image!.imageOrientation)

关于swift - 如何复制 UIImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31130614/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com