Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:使用UIGraphicsGetImageFromCurrentImageContext进行屏幕捕获时保持真实照片分辨率_Ios - Fatal编程技术网

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

iOS:使用UIGraphicsGetImageFromCurrentImageContext进行屏幕捕获时保持真实照片分辨率,ios,Ios,我想在我的应用程序中进行基本的照片编辑,现在我需要能够在照片上添加文本。原始照片的宽度和高度都大于2000像素,因此它将被缩放以适应屏幕,而无需修改其比例 因此,我将图像放在UIImageView中,在其上拖动一个标签,然后使用UIGraphicsGetImageFromCurrentImageContext将图像保存在屏幕上。问题是我会得到一个小图像(320 X一些高度) 完成这项任务但不缩减解决方案的最佳方法是什么 非常感谢 我在一个应用程序中遇到了完全相同的问题 我意识到你不能通过截屏来实

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

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

完成这项任务但不缩减解决方案的最佳方法是什么


非常感谢

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

我意识到你不能通过截屏来实现这一点。反过来,这意味着用UILabels等工具无法将标签和文本拖到图像上(我只能忍受)

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

目前,您拥有
UIImageView
框架。事实上,这是无关紧要的。它纯粹是为了向用户展示正在发生的事情

这与
ui标签
相同。它也有一个
框架。同样,这与最终图像无关

您需要的是以非绝对的方式存储数据,然后将这些值转换为帧以便在设备上显示

因此,如果您有一个
3200x4800
像素的图像(这对我来说很简单),并且它显示在设备上并“缩小”到
320x480
。现在,用户放置一个标签,其框架为
10,10,100,21
,文本为“Hello,world”,字体大小为特定字体

存储帧
10,10,100,21
是无用的,因为输出图像时需要的是<代码>1001001000210
(即大小的十倍)

所以,你真的应该在后台存储信息,比如

frame = 0.031, 0.021, 0.312, 0.044
// these are all percentages
现在,根据图像的大小,有了标签的位置和大小的百分比值

因此,对于缩小的图像大小,它将返回
10、10、100、21
,对于完整的图像大小,它将返回
100、100、1000、210
,因此打印出来时看起来大小相同

您可以创建一个带有UIImageView和UILabel的UIView复合视图,然后只需在渲染之前将其调整为完整图像大小即可。这将是一种简单但天真的方法

或者您可以创建一个UIView,CALayers支持它来显示图像和文本

或者,您可以使用某种绘图方法渲染图像和文本

不管怎样,你都不能只使用屏幕截图


是的,这比它第一次出现时要复杂得多。

非常感谢您的详细回答。首先,我将尝试第一种方法,即屏幕上的视图具有真实图像大小的方法。我希望字体大小是算术级数,否则用缩小的比例乘以它就行不通了。如果我被卡住了,我会带着更多的问题回来。@Meeshoo别担心。对于字体大小,我必须创建一个循环,增加字体大小并计算边界矩形(NSString函数),直到它变得太大,然后使用以前的大小。包含真实大小图像的视图也可以使用UIGraphicsGetImageFromCurrentImageContext呈现?您是否收到内存警告?我的应用程序因“由于内存压力而终止”错误而崩溃。编辑后照片的大小为2 mb,而不是最初的0.6 mb。