代码之家  ›  专栏  ›  技术社区  ›  TalkingCode

Cocoa:将图像缩放到ImageWell中

  •  1
  • TalkingCode  · 技术社区  · 14 年前

    我正在申请保持漫画书收藏秩序。用户应该能够通过ImageWell将封面艺术品的图像拖到程序中。

    因为它是不可能的拖出应用程序的图像再次我不需要保存在它的原始大小的图片。像ImageWell那么大的图像就可以了。

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

    为了使事情更加复杂,ImageWell与核心数据绑定在一起。所以我需要在核心数据将图片保存为原始大小之前重新缩放图像。

    2 回复  |  直到 14 年前
        1
  •  3
  •   Alex    14 年前

    通常缩放图像的方法是分配一个新的 NSImage 尺寸越小, lockFocus 并将原始图像绘制到 n图像 unlockFocus 当然,当你完成的时候)。从那里,您可以使用CoreGraphics API或,如果您的需求很简单,使用 TIFFRepresentation 上的方法 n图像 .

    至于处理核心数据,我建议将图像保存在一个单独的实体中,并与拥有它的对象建立关系。原因是因为核心数据在获取时一次加载对象的所有数据,所以当您不需要图像数据(图像数据可能很大,甚至对于小图像也是如此)时,可以避免每次获取时将其加载到内存的缓慢性能和内存压力。你可以暂时 image 属性,该属性根据需要延迟加载/存储图像。

        2
  •  1
  •   regulus6633    14 年前

    想想NSValueTransformer。值转换器就是。。。它转换了价值观。因此,您需要调整图像的大小(例如转换),并且值转换器可以通过绑定工作。如果您查看interface builder中的绑定,您将看到“值转换器”部分,您将在其中挂接转换器。变压器有两种主要的方法,一种是transformedValue方法,另一种是reverseTransformedValue方法。第一个用于在图像视图中显示数据,第二个用于相反方向。。。当数据写入核心数据模型时。所以它们是在核心数据和接口之间的输入和输出方法。

    因此,对于您的情况,您可以使用reverseTransformedValue方法调整大小(如Alex所解释的)。看到了吗 here 更多的细节和你需要做的例子。