gpt4 book ai didi

iphone - 在 iOS 上使用 Cocoa 在后台进行 9 切片缩放/拉伸(stretch)

转载 作者:可可西里 更新时间:2023-11-01 04:42:47 25 4
gpt4 key购买 nike

我想使用“9 切片”缩放来拉伸(stretch)图像,其中仅缩放图像的中心。完全像 UIImage 的 stretchableImageWithLeftCapWidth方法,但是我想在后台线程中执行此操作。我明白这个方法只能在gui线程中使用。

我正在 iOS/iPad/iPhone 上开发。

有没有人有代码片段,或者知道可以执行此操作的库?我不想重新发明轮子!

一些我发现有用的相关引用资料:

CGContext 文档:

关于在后台绘制的不错的博客条目:

使用 CGContext 旋转图像:

最佳答案

从 iOS 4 开始,UIKit 的某些部分是线程安全的;我相信 UIGraphics 函数和 UIImage 绘图应该可以工作。

如果你需要支持 iOS 3,那就有点困难了。如果你想完全避免 UIKit(可能是明智的),那么你需要将 CGImageRef 传递给后台线程。您可能还需要担心其他事情;我假设 scale 为 1,imageOrientation 为纵向。

  1. 创建上下文:CGBitmapContextCreate()
  2. 创建您的子图像:CGImageCreateWithImageInRect()
  3. 将每个子图像绘制到正确的位置:CGContextDrawImage()
  4. 从上下文中获取图像:CGBitmapContextCreateImage()
  5. 释放必要的东西并将 CGImageRef 返回给主线程。
  6. 在主线程中,使用 +[UIImage imageWithCGImage:]+imageWithCGImage:scale:orientation:(请注意,在后一种情况下,只有比例为 2 的图像似乎支持纵向;我不确定为什么)。

另请注意,将图像粘贴在 UIImageView 中并适当设置 contentStretch 会好得多,因为这样缩放是在 GPU 上完成的。

关于iphone - 在 iOS 上使用 Cocoa 在后台进行 9 切片缩放/拉伸(stretch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6386451/

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