裁剪 UIImage

2023-11-22

我有一些调整图像大小的代码,这样我就可以获得图像中心的缩放块 - 我用它来拍摄UIImage并返回图像的小方形表示,类似于照片应用程序的相册视图中看到的内容。 (我知道我可以使用UIImageView并调整裁剪模式以达到相同的结果,但这些图像有时会显示在UIWebViews).

我开始注意到这段代码中出现了一些崩溃,我有点困惑。我有两种不同的理论,我想知道其中一种是否有根据。

理论 1) 我通过绘制目标尺寸的屏幕外图像上下文来实现裁剪。因为我想要图像的中心部分,所以我设置CGRect参数传递给drawInRect到大于我的图像上下文范围的东西。我希望这是犹太洁食,但我是否试图掩盖其他我不应该触及的记忆?

理论 2)我在后台线程中完成所有这些工作。我知道 UIKit 的某些部分仅限于主线程。我假设/希望绘制到屏幕外视图不是其中之一。我错了吗?

(哦,我多么想念NSImage's drawInRect:fromRect:operation:fraction:方法。)


2014-05-28 更新:我写这篇文章的时候,iOS 3 左右还是很热门的新事物,我确信现在有更好的方法可以做到这一点,可能是内置的。正如很多人提到的,这种方法没有考虑旋转;阅读一些其他答案并传播一些赞成票,以使对此问题的回答对每个人都有帮助。

原始回复:

我将在其他地方复制/粘贴我对同一问题的回答:

没有一个简单的类方法可以做到这一点,但有一个函数可以用来获得所需的结果:CGImageCreateWithImageInRect(CGImageRef, CGRect)会帮助你的。

这是一个使用它的简短示例:

CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
// or use the UIImage wherever you like
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]]; 
CGImageRelease(imageRef);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

裁剪 UIImage 的相关文章

  • 增加 NSData 的长度

    基本上 我有一个 46 个字符的 NSString 我将其转换为 NSData 我需要将字符串填充到 48 个字符 仅在 NSString 末尾添加 是行不通的 所以 我只是使用以下方法增加了 NSData 的长度 NSString str
  • 为什么 GDB 调试器不断冻结 Xcode 4?

    这真是一个奇怪的错误 我正在开发一个使用相机源的 iPhone 项目 并通过 OpenGL 着色器运行它以对其应用效果 然而 每次我在代码中简单地创建一个新的 GLfloat 时 调试器都会在启动时冻结 我无法复制和粘贴文本 因为整个 XC
  • 如何使用 afnetworking 在后台上传任务

    我正在尝试使用 AFNetworking 上传大文件 并在应用程序处于后台时继续上传 我可以很好地上传文件 但是当我尝试使用后台配置时 应用程序崩溃并显示以下堆栈跟踪 异常 EXC BAD ACCESS 代码 1 地址 0x8000001f
  • 下标:使用字符串枚举访问我的字典值

    我想做类似的事情 使用字符串枚举访问我的字典值 我试图重载字典的下标但没有成功 访问字典 let district address JsonKeys district 其中 JsonKeys 是 enum JsonKeys String c
  • 应用程序发布后,对如何更新 UITableView 上的数据源感到困惑

    阅读文档后 我似乎误解了有关数据管理的一些概念 所以我试图澄清一些方面 如果这篇文章听起来多余和重复 请道歉 我的应用程序有多个 TableView 每个表视图都有一个 pList 形式的数据源 因此 我有几个属性列表用作我的表的数据源 目
  • 访问iOS 7隐藏的UITableViewCellScrollView?

    苹果改变了UITableViewCelliOS 7 中的层次结构 使用iOS 6 1 SDK
  • 在 iOS 上的 SceneKit 中导入 3d 模型

    从 URL 导入 obj 文件并将其转换为 SCNNode 时遇到问题 这是代码 swift3 let url URL init string https cloud box com shared static ock9d81kakj91d
  • Expo 应用程序“您的应用程序正在使用广告标识符 (IDFA)”

    我正在尝试将应用程序上传到应用程序商店 每次我上传二进制文件时 苹果都会坚持认为我的应用程序正在使用广告 而我从未实现过这样的事情 我查看了文档并删除了涉及的所有代码ASIdentifier and adIdentifier我不太确定我错过
  • 删除部分(红色删除按钮),UITableViewController - iOS

    我正在尝试做一个分组的 uitableview 并且我已经激活了编辑选项 我希望用户也能够删除整个部分 而不仅仅是特定行 因此 当您单击 编辑 时 每个表格单元格左侧显示的红色减号按钮也应该显示在各个部分 部分标题左侧 有人知道如何做到这一
  • Xcode UI 测试 - 通过 id 在 Webview 中查找元素

    我们的应用程序是混合的 包含 webview 我正在尝试使用 Xcode UI 测试自动化我们的应用程序 我能够使用以下方法找到网络按钮 let app XCUIApplication app launch let button app s
  • 从 AF.Request 响应获取数据

    我需要使用 Alamofire 的 Post 请求调用的 json 响应中的数据 但由于某种原因我无法访问该数据 我尝试按照 Alamofire github 文档以及这篇文章进行操作从 AF 响应 JSON 获取数据 https stac
  • NSPredicate 使用 RLMResults 作为参数

    我试图通过使用 NSPredicate 进行过滤来获取两组 Realm 数据 并且是不同的对象 之间的差异 但存在一个我无法理解的错误 我的代码 RLMResults topStories KFXTopStory allObjects NS
  • RxSwift、RxCocoa 和 UITableview

    我在使用 RxSwift 实现 UITableView 时遇到问题 我尝试使用以下代码将模型数组的可观察对象绑定到表项 models bind to self tableView rx items cellIdentifier Cell c
  • iOS 中的词干 - 不适用于单个单词

    我在用NSLinguisticTagger用于词干提取 我能够获得句子中单词的词干 但无法获得单个单词的词干 以下是我正在使用的代码 NSString stmnt i waited NSLinguisticTaggerOptions opt
  • 我正在寻找 GCDAsyncUdpSocket 上的一些示例,但发现没有一个有效

    接收数据从未被调用过 我编写了这个由我的主线调用的 swift 类UI视图控制器向接收消息的服务器发送消息 但当服务器发回响应时 客户端永远不会收到它 因为 didReceiveData 从未被触发 我一直在谷歌上搜索并查看文档 它说客户端
  • 将子视图发送到后面

    我正在尝试模仿 facebook ios 侧面菜单并让它工作 但是我遇到的问题是我无法将侧面菜单发送到后面 正如另一个问题中所讨论的那样使用 Objective C 的 iphone facebook 侧边菜单 https stackove
  • Parse 在哪里存储用户会话

    登录代码 PFUser logInWithUsernameInBackground self userTextField text password self passwordTextField text block PFUser user
  • 如何在 iOS 5 中使用 Embed Segue?

    iOS 6 引入了 Embed Segue 允许在 Storyboard 中使用自定义容器控制器 有没有办法在 iOS 5 上复制这个 这里的挑战是子视图控制器的视图通常要添加为父视图控制器的某些容器视图的子视图 因为你不能随机进行序列UI
  • 在 iPhone 模拟器中从硬盘读取文件

    是否可以将文件 从我的普通文件系统 读入在 iPhone 模拟器上运行的 iPhone 应用程序 据我所知 iPhone 本身没有 用户可访问的 文件系统 但这只是为了测试 并且只能在模拟器中运行 该文件将是一个可以在应用程序运行时编辑的文
  • iOS SWIFT - WebRTC 从前置摄像头更改为后置摄像头

    WebRTC 视频默认使用前置摄像头 效果很好 但是 我需要将其切换到后置摄像头 但我无法找到任何代码来执行此操作 我需要编辑哪一部分 是 localView 或 localVideoTrack 还是捕获器 斯威夫特3 0 对等连接只能有一

随机推荐

  • 解析单例时获取 DbContext

    Within ConfigureServices I have services AddDbContext
  • Bootstrap 4.0 无效反馈不显示

    我正在使用 Bootstrap 4 0 非测试版 验证 并且在显示无效反馈文本时遇到问题 div class form row div
  • 您认为“自动接口实现”在 .NET / C# 中有用吗?

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 考虑一下 public c
  • 未捕获的引用错误:e 未定义

    我正在尝试这样做 canvasDiv mouseover function var pageCoords e pageX e pageY var clientCoords e clientX e clientY filler text e
  • 如何制作创建多个文件的 Netbeans 模板?

    Netbeans 最棒的功能之一是使用一些 FreeMarker 模板生成代码 我对此有一些疑问 我希望这里有人可以帮助我 如何在 Netbeans 上制作一个生成多个文件的模板 例如 我使用 来自实体 Bean 的 JSF 页面 生成向导
  • std::uintptr_t 可以用来避免越界指针算术的未定义行为吗?

    现在我们知道进行越界指针算术具有未定义的行为 如此处所述那么问题 我的问题是 我们可以通过转换为 std uintptr t 进行算术运算然后转换回指针来解决这种限制吗 这保证有效吗 例如 char a 5 auto u reinterpr
  • Rails 3.2 ActiveAdmin“集合不是分页范围。”错误

    我正在使用 Rails 3 2 和 ActiveAdmin 0 4 4 开发一个应用程序 我有名为 Teaser 的模型 app models teaser rb class Teaser lt ActiveRecord Base attr
  • PEP508:为什么版本要求或 URL 之一而不是两者都要求?

    配置时install requires in a setup py文件中 我们可以指定版本号 package gt 1 2 3 或来源 package git https git example com some path to packa
  • C中的fork和pipe是什么,它们可以在C++中使用吗?

    What is fork是什么pipe 哪些场景可以解释为什么需要使用它们 两者有什么区别fork and pipe在C语言中 我们可以在 C 中使用它们吗 我需要知道这是因为我想用 C 实现一个程序 它可以访问实时视频输入 转换其格式并将
  • 为什么 Java 8 中有多个版本的Optional

    我注意到 Java 8 中有许多类型的多个版本 例如 介绍的Optional类有多种口味OptionalInt OptionalLong etc 虽然Optional有一个类型参数 Optional
  • preg_match_all 如何获得*所有*组合?甚至重叠[重复]

    这个问题在这里已经有答案了 PHP 正则表达式函数有没有办法获取正则表达式的所有可能匹配项即使这些匹配重叠 例如获取所有 3 位子字符串 d 3 您可能期望得到 123456 gt 123 234 345 456 但 preg match
  • Objective-C 错误:初始化元素不是常量

    为什么编译器在提供的代码上给出以下错误消息 初始化器元素不是常量 相应的C C 代码在gcc下完美编译 import
  • 如何在 XAML 中将颜色转换为画笔?

    我想将 System Windows Media Color 值转换为 System Windows Media Brush 颜色值通过数据绑定到 Rectangle 对象的 Fill 属性 Fill 属性采用 Brush 对象 因此我需要
  • python 获取调用函数的当前变量

    def foo a 1 b 2 dir prints a b bar der bar foo pointer print dir foo pointer should print a b 我试图使用bar sys modules name
  • Matplotlib 动画在 PyCharm 中不起作用

    我发现了各种使用 matplotlib 生成动画的短文件 一般来说 它们在从命令行运行时工作正常 但在 PyCharm 中我只能得到一个静止帧 我问同样的问题Matplotlib 在 IDE PyCharm 中使用时不会更新绘图 那里发布了
  • WPF - FlowDocument - 将表拉伸到整个宽度?

    我有一个包含任意数量的列和行的数据表 我正在尝试打印它们 到目前为止 我所拥有的最好的运气是将数据放入表中 然后将该表添加到 FlowDocument 中 到目前为止 一切都很好 我现在遇到的问题是表格只 想要 占据文档宽度的大约一半 我已
  • C语言中变量名是如何存储的?

    我想问C中的变量是如何存储在C中的 为了更清楚 请考虑以下代码 int main int a 1 b b a 2 return 0 例如 这里的内存 C 存储变量位置的名称 eg if a 0x12A7 认为 b 0x123B1 那么如何以
  • 将文件转换为 Base64 函数输出

    Public Function ConvertFileToBase64 ByVal fileName As String As String Dim ReturnValue As String If My Computer FileSyst
  • 如何清除 pyqt QTableWidget?

    我想清除我的 QTableWidget 首先 我在 qcombobox 中选择一个用户 然后单击 qpushbutton 并从数据库记录中填充它 当我选择其他用户并单击 qpushbutton 添加数据时 我尝试使用以下方法清除 self
  • 裁剪 UIImage

    我有一些调整图像大小的代码 这样我就可以获得图像中心的缩放块 我用它来拍摄UIImage并返回图像的小方形表示 类似于照片应用程序的相册视图中看到的内容 我知道我可以使用UIImageView并调整裁剪模式以达到相同的结果 但这些图像有时会