gpt4 book ai didi

swift - 将图片拆分为图 block 并放入数组

转载 作者:可可西里 更新时间:2023-11-01 01:24:38 26 4
gpt4 key购买 nike

我有一个大的 Tilesheet(一张图片中有超过 1000 个图 block ),如下所示:enter image description here

每个图 block 都是 64x64,我想拆分图片。在这个例子中,我将 4 个瓷砖放在一个数组中。我怎样才能做到这一点?有不同的尺寸?我需要一些魔法(数学)或更好的想法,我怎样才能在循环中获得正确的裁剪位置。

一些快速编码的代码:

func cropImage(image: UIImage, tileSize: Int) -> [UIImage]? {
if Int(image.size.height) % 64 != 0 && Int(image.size.width) % 64 != 0 {
return nil
}

let hCount = Int(image.size.height) / tileSize
let wCount = Int(image.size.width) / tileSize

var tiles:[UIImage] = []

for i in 0...hCount {
for p in 0...wCount {
let temp:CGImage = image.cgImage!.cropping(to: CGRect.zero)!
tiles.append(UIImage(cgImage: temp))
}
}
return tiles
}

最佳答案

在每次通过循环时,您需要两条信息:

  1. 图 block 的大小是多少?这对所有瓷砖都是一样的;你只需要在循环之前计算一次。

  2. 磁贴的来源是什么?这对于每个图 block 都是不同的。您将循环遍历 x 计数和 y 计数,在最内层的循环中,您将根据图 block 大小计算这个图 block (即这个 x 和 y)的原点你已经知道了。

现在您知道要用于 拼贴的原始图像的确切矩形。剩下的就很简单了。

但是,我建议考虑一下裁剪到该矩形的实际方式。您建议通过调用 CGImage 的 cropping(to:) 进行裁剪。但是,在类似的情况下,这不是我所做的。我通过将原始 UIImage 在所需原点的负值绘制到所需大小的图像图形上下文中来制作 UIImage。

关于swift - 将图片拆分为图 block 并放入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42076184/

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