gpt4 book ai didi

iOS:使用 UIGraphicsGetImageFromCurrentImageContext 进行屏幕捕获时保持真实的照片分辨率

转载 作者:行者123 更新时间:2023-11-29 02:31:39 29 4
gpt4 key购买 nike

我想在我的应用程序中进行基本的照片编辑,现在我需要能够在照片上添加文本。原始照片的宽度和高度大于 2000 像素,因此将在不修改其比例的情况下缩放以适合屏幕。

因此,我将图像放在 UIImageView 中,在其上拖动一个标签,然后使用 UIGraphicsGetImageFromCurrentImageContext 将图像保存在屏幕上。问题是我会得到一个小图像(320 X 一些高度)。

完成此任务但又不缩小分辨率的最佳方法是什么?

非常感谢!

最佳答案

我在一个应用中遇到了完全相同的问题。

我意识到,您不能通过截屏来做到这一点。反过来,这意味着将标签和文本拖到图像上并不能真正完成(但我可以忍受)使用 UILabels 等...

您需要做的是跟踪数据方面发生的一切。

目前您拥有 UIImageViewframe。这在现实中是无关紧要的。它纯粹是为了向用户展示正在发生的事情。

这与 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/

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