首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cocoa :拖动到ImageWell中的缩放图像

Cocoa :拖动到ImageWell中的缩放图像
EN

Stack Overflow用户
提问于 2010-05-04 23:05:10
回答 2查看 794关注 0票数 1

我正在处理应用程序,以保持漫画收藏的顺序。用户应该能够通过ImageWell将封面图片拖到程序中。

由于不可能再次将图像拖出应用程序,因此我不需要将图片保存为其原始大小。一张ImageWell大小的图像就足够了。

问题是我如何用我的应用程序重新缩放图像?

让事情变得更复杂的是,ImageWell绑定了核心数据。因此,在Core Data将图片保存为其原始大小之前,我需要重新缩放图像。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-04 23:30:49

缩放图像的通常方法是分配一个具有所需较小尺寸的新NSImage,在其上使用lockFocus,然后将原始图像绘制到NSImage中(当然,完成后为unlockFocus)。在此基础上,您可以使用CoreGraphics API或NSImage上的TIFFRepresentation方法(如果需求很简单)将图像序列化为各种格式。

至于处理核心数据,我建议将你的图像保存在一个独立的实体中,并与拥有它的对象建立关系。原因是因为Core Data在获取时一次加载对象的所有数据,所以当您不需要图像数据(可能非常大,即使是小图像)时,您可以避免在每次获取时将其加载到内存中的缓慢性能和内存压力。您可以在主实体上放置一个瞬态image属性,以便根据需要缓慢地加载/存储图像。

当您的图像很好地更新了与新图像的绑定时,这将是重新缩放图像并将其存储在数据对象中的绝佳机会。也就是说,您将通过绑定将完整大小的图像传递给数据对象,它将处理重新缩放。

票数 3
EN

Stack Overflow用户

发布于 2010-05-05 00:18:55

想想NSValueTransformer吧。值转换器就是这样的。它转换了值。因此,您希望您的图像调整大小(例如。转换)和值转换器通过绑定工作。如果您查看接口构建器中的绑定,您将看到"Value Transformer“部分,您将在其中挂接您的transformer。Transformers有两个主要的方法,一个是transformedValue方法,一个是reverseTransformedValue方法。第一个用于在图像视图中显示数据,第二个用于相反的方向。当数据被写入核心数据模型时。因此,它们是位于核心数据和接口之间的输入和输出方法。

因此,对于您的情况,您将在reverseTransformedValue方法中调整大小(正如Alex所解释的那样)。有关您需要执行的操作的更多详细信息和示例,请参阅here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2766473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档