Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.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
Iphone视网膜显示,核心数据由用户生成图像_Iphone_Core Data_Image Scaling_Retina Display - Fatal编程技术网

Iphone视网膜显示,核心数据由用户生成图像

Iphone视网膜显示,核心数据由用户生成图像,iphone,core-data,image-scaling,retina-display,Iphone,Core Data,Image Scaling,Retina Display,我在这个论坛上讨论这个话题已经有一段时间了,但对于如何成功地将图像存储在核心数据中以供视网膜显示,我仍然没有一个清晰的概念 我知道,通过核心数据存储图像可能并非对所有人都是最好的,但在出于某种原因进行存储的情况下,了解这些图像的读取和显示方式非常重要 由于图像没有文件扩展名,视网膜版本(如果存在)显然不能有2x扩展名 因此,我希望有人能建议我如何以最佳分辨率存储通过应用程序创建的位图图像,以便它们在视网膜和非视网膜设备中都有最佳显示 例如,如果在我的非视网膜3GS iPhone上,我有一个显示5

我在这个论坛上讨论这个话题已经有一段时间了,但对于如何成功地将图像存储在核心数据中以供视网膜显示,我仍然没有一个清晰的概念

我知道,通过核心数据存储图像可能并非对所有人都是最好的,但在出于某种原因进行存储的情况下,了解这些图像的读取和显示方式非常重要

由于图像没有文件扩展名,视网膜版本(如果存在)显然不能有2x扩展名

因此,我希望有人能建议我如何以最佳分辨率存储通过应用程序创建的位图图像,以便它们在视网膜和非视网膜设备中都有最佳显示

例如,如果在我的非视网膜3GS iPhone上,我有一个显示55x60图像的UIImageView,我当前存储的图像“缩略图”为55x60

在视网膜显示器上,显然我想要一个110x120的图像来显示

但是,既然我不能在核心数据中创建具有扩展的映像,我该如何做呢

如果我决定只创建一个将用于两台设备的映像,是否只使用110x120映像?这是如何工作的-它会使用视网膜显示设备的完整图像,并缩小非视网膜设备的图像?或者(我希望不是)它会缩小非视网膜设备的图像,然后再放大视网膜设备的图像吗


提前谢谢

首先:不要将图像存储在核心数据中。将映像存储在文件系统(即documents目录)上并使用核心数据存储引用更容易(而且性能更高!)


也就是说,如果您坚持使用核心数据来存储该数据,您可以存储视网膜版本,然后检测您何时在非视网膜设备上,并对非视网膜版本进行内存缩放。

是您希望将UIImages存储在CoreData中以避免图像被“清理”的部分原因由操作系统自动执行

如果没有,您应该按照Wayne提到的那样做,只需在Documents目录中创建对文件路径的引用


如果“清理”是您试图避免的问题,那么只需将UIImage的NSData存储为NSManagedObject的属性之一,然后在使用时对其进行适当的缩放。或者,您也可以在将图像放入CoreData之前缩放图像。

谢谢,我已经在CoreData中存储了图像,我将在将来尝试更改它。(旁注-在文件系统中存储映像是否会使备份/恢复和iCloud存储变得更加复杂?)。在任何情况下,就目前而言,我希望找到在核心数据中存储图像的最佳解决方案。你是说,如果我存储视网膜版本(在我的示例中是110x120),它将自动在视网膜设备中显示该分辨率,而无需我做任何工作?那么,在没有我做任何工作的情况下,它不会自动缩小非视网膜设备的图像吗?如果您的图像视图设置为这样做,它将进行缩放。我不认为它是特定于图像视图的-我想我想问的是:当图像是核心数据图像时,有没有对图像进行“自动”缩放(与通过UIImage imagedNamed等获取的具有扩展名的图像相比)。如果不存在2x版本,则带有扩展名的图像会自动放大以用于视网膜显示。如果这是来自核心数据的图像,是否有基于设备的自动缩放?抱歉,韦恩,重新阅读您的答案。只是澄清一下-什么是内存中的缩放?使用图形上下文进行缩放:我使用核心数据是因为我对im进行了建模我第一次启动Core Data Recipes示例应用程序后的年龄存储。目前,很多人都在积极使用该应用程序,我还没有准备好改变一切。如果我从零开始,这将是一个不同的答案…当我说我存储图像时,我使用ImageToDataTransformer-这与storin是一样的吗图像的NSData?在将图像放入核心数据之前,我确实会缩放图像,但我不确定如何最好地进行缩放,以使视网膜显示正常工作。