我正在处理应用程序,以保持漫画收藏的顺序。用户应该能够通过ImageWell将封面图片拖到程序中。
由于不可能再次将图像拖出应用程序,因此我不需要将图片保存为其原始大小。一张ImageWell大小的图像就足够了。
问题是我如何用我的应用程序重新缩放图像?
让事情变得更复杂的是,ImageWell绑定了核心数据。因此,在Core Data将图片保存为其原始大小之前,我需要重新缩放图像。
发布于 2010-05-04 23:30:49
缩放图像的通常方法是分配一个具有所需较小尺寸的新NSImage
,在其上使用lockFocus
,然后将原始图像绘制到NSImage
中(当然,完成后为unlockFocus
)。在此基础上,您可以使用CoreGraphics API或NSImage
上的TIFFRepresentation
方法(如果需求很简单)将图像序列化为各种格式。
至于处理核心数据,我建议将你的图像保存在一个独立的实体中,并与拥有它的对象建立关系。原因是因为Core Data在获取时一次加载对象的所有数据,所以当您不需要图像数据(可能非常大,即使是小图像)时,您可以避免在每次获取时将其加载到内存中的缓慢性能和内存压力。您可以在主实体上放置一个瞬态image
属性,以便根据需要缓慢地加载/存储图像。
当您的图像很好地更新了与新图像的绑定时,这将是重新缩放图像并将其存储在数据对象中的绝佳机会。也就是说,您将通过绑定将完整大小的图像传递给数据对象,它将处理重新缩放。
发布于 2010-05-05 00:18:55
想想NSValueTransformer吧。值转换器就是这样的。它转换了值。因此,您希望您的图像调整大小(例如。转换)和值转换器通过绑定工作。如果您查看接口构建器中的绑定,您将看到"Value Transformer“部分,您将在其中挂接您的transformer。Transformers有两个主要的方法,一个是transformedValue方法,一个是reverseTransformedValue方法。第一个用于在图像视图中显示数据,第二个用于相反的方向。当数据被写入核心数据模型时。因此,它们是位于核心数据和接口之间的输入和输出方法。
因此,对于您的情况,您将在reverseTransformedValue方法中调整大小(正如Alex所解释的那样)。有关您需要执行的操作的更多详细信息和示例,请参阅here。
https://stackoverflow.com/questions/2766473
复制相似问题