- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我的应用程序中进行基本的照片编辑,现在我需要能够在照片上添加文本。原始照片的宽度和高度大于 2000 像素,因此将在不修改其比例的情况下缩放以适合屏幕。
因此,我将图像放在 UIImageView 中,在其上拖动一个标签,然后使用 UIGraphicsGetImageFromCurrentImageContext 将图像保存在屏幕上。问题是我会得到一个小图像(320 X 一些高度)。
完成此任务但又不缩小分辨率的最佳方法是什么?
非常感谢!
最佳答案
我在一个应用中遇到了完全相同的问题。
我意识到,您不能通过截屏来做到这一点。反过来,这意味着将标签和文本拖到图像上并不能真正完成(但我可以忍受)使用 UILabels 等...
您需要做的是跟踪数据方面发生的一切。
目前您拥有 UIImageView
的 frame
。这在现实中是无关紧要的。它纯粹是为了向用户展示正在发生的事情。
这与 UILabel
相同。它也有一个框架
。同样,这与最终图像无关。
您需要的是以非绝对的方式存储其背后的数据,然后将这些值转换为帧以在设备上显示。
因此,如果您有一张 3200x4800
像素的图像(只是为了方便我)并且它显示在设备上并“缩小”到 320x480
.现在,用户放置一个带有 10, 10, 100, 21
框架的标签,并以特定字体大小显示文本“Hello, world”。
存储帧 10, 10, 100, 21
没有用,因为输出图像时需要的是... 100, 100, 1000, 210
(即大小的十倍)。
所以,你真的应该像...一样在后台存储信息
frame = 0.031, 0.021, 0.312, 0.044
// these are all percentages
现在,您可以根据图像的大小确定标签的位置和大小的百分比值。
因此,对于缩小后的图像大小,它将返回 10, 10, 100, 21
,对于完整图像大小,它将返回 100, 100, 1000, 210
因此在打印出来时看起来大小相同。
您可以创建一个复合 UIView
,方法是让一个 UIView 带有一个 UIImageView 和一个 UILabel,然后您只需在渲染它之前将它的大小调整为完整的图像大小。这将是最初处理它的简单但天真的方法。
或者您可以创建一个带有 CALayers 支持的 UIView 来显示图像和文本。
或者您可以使用某种绘制方法渲染出图像和文本。
无论哪种方式,您都不能只使用屏幕截图。
是的,这比乍看起来要复杂得多。
关于iOS:使用 UIGraphicsGetImageFromCurrentImageContext 进行屏幕捕获时保持真实的照片分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26778303/
我的应用程序包含两部分:网络部分和 GUI。它的工作方式有点像浏览器 - 用户从服务器请求一些信息,服务器发回一些代表某些 View 的数据,然后 GUI 显示它。 现在我已经将网络部分实现为一项服务
给定表达式字符串exp,编写程序检查exp中“{”、“}”、“(”、“)”、“[”、“]的对和顺序是否正确。 package main import ( "fmt" stack "gi
我想要一个简单的脚本在后台保持运行。目前看起来像这样: import keyboard while True: keyboard.wait('q') keyboard.send('ct
我维护着许多 RedHat Enterprise Linux(7 台和 8 台)服务器(>100 台),其中包含不同的应用程序。为了保持理智,我当然会使用 Ansible 等工具,更重要的是,公共(p
我有一个 winforms 应用程序,它在网络服务请求期间被锁定 我已经尝试使用 doEvents 来保持应用程序解锁,但它仍然不够响应, 我怎样才能绕过这个锁定,让应用程序始终响应? 最佳答案 最好
我正在努力在我的项目中获得并保持领先的 0。以下是当前相关的代码: Dim jobNum As String jobNum = Left(r1.Cells(1, 1), 6) r2.Cells(1
我正在尝试在我的 Canvas 中定位元素相对于我的背景。 窗口被重新调整大小,保持纵横比。 背景随着窗口大小而拉伸(stretch)。 问题是一旦重新调整窗口大小,元素位置就会不正确。如果窗口的大小
一直在玩弄 Hibernate 和 PostgreSQL,试图让它按预期工作。 但是由于某种原因,当我尝试将具有@OneToMany 关系的对象与集合中的多个项目保持一致时,除了第一个项目之外,所有项
我想将某些东西提交到 github 存储库,但我(显然)没有任何权利这样做。我对那个 repo 做了一个分支,提交了我的更改并提交了一个 pull-request。 现在,问题是过了一段时间其他人已经
这是一个初学者问题,我仍在考虑“在 OOP 中”,所以如果我错过了手册中的答案或者答案很明显,我深表歉意。 假设我们有一个抽象类型, abstract type My_Abstract_type en
我们正在开展的一些项目在 jQuery 1.4.2 或更早版本中有着深厚的根基,介于缺乏最新版本的性能优势(或语法糖)、使用现已弃用的方法的耻辱以及部署一个积极维护的库的 3 年以上旧版本,升级现在迫
我看到在FMDB 2.0中,作者为线程添加了FMDatabaseQueue。例子是: // First, make your queue. FMDatabaseQueue *queue = [FMDa
我在 NSScrollView 中有一个 NSTableView。 NSTableView 的内容是通过绑定(bind)到 NSArrayController 来提供的,而 NSArrayContro
我在 TreeView 上有一个节点,我手动填充该节点并希望保持排序。通过用户交互,TreeViewItem 上的标题可能会更改,它们应该移动到列表中的适当位置。 我遍历一个 foreach,创建多个
我从主 NSWindow 打开一个 NSWindow。 DropHereWindowController *dropHereWindowController = [[DropHereWindowCon
我需要放置一个 form 3 按钮,当我单击该按钮时,将其显示为按下,其他按钮向上,当我单击另一个按钮时,它应该为“向下”,其他按钮应为“向上” 最佳答案 所有按钮的属性“Groupindex”必须设
我有一个使用 AnyEvent::MQTT 订阅消息队列的 perl 脚本。 目前我想要它做的就是在收到消息时打印出来。我对 perl 完全陌生,所以我正在使用它附带的演示代码,其中包括将 STDIN
如何在 .NET 应用程序中保持 TreeView 控件的滚动位置?例如,我有一个树形 View 控件,并经历了一个向其添加各种节点的过程,并将它们固定在底部。在此过程中,我可以滚动浏览 TreeVi
我维护了大量的 vbscripts,用于在我的网络上执行各种启动脚本,并且有一些我在几乎所有脚本中使用的函数。 除了复制和粘贴之外,有没有人对我如何创建可重用 vbscript 代码库有建议。我并不反
我有一些关于 Azure 自托管的问题。 假设用户 Alex 在物理机 M 上设置了 Windows 自托管代理。当 Alex 注销且计算机进入休眠状态时,代理将脱机。现在,当 Bob 登录同一台计算
我是一名优秀的程序员,十分优秀!