CIContext drawImage:inRect:fromRect:scaling

时间:2013-01-04 09:44:08

标签: objective-c macos core-image

我正在使用CIContext方法- (void)drawImage:(CIImage *)im inRect:(CGRect)dest fromRect:(CGRect)src将我的图片绘制到屏幕上。但我需要实现放大/缩小方法。我怎么能实现它?我认为可以通过增加dest rect来实现放大,因为苹果文档说:

The image is scaled to fill the destination rectangle.

但是缩小呢?因为如果缩小dest矩形,则以图像的实际大小绘制图像,但只有部分图像可见(适合dest矩形的部分)。

你有什么建议吗?

3 个答案:

答案 0 :(得分:0)

您可以尝试使用this进行图像调整大小(缩放)。希望这会对你有所帮助。

答案 1 :(得分:0)

您可以在绘图前使用CIFilter调整CIImage的大小。 Quartz Composer附带了一个使用此过滤器的好例子。只需在QC中查找Image Resize过滤器的描述。

修改 另一个很好的缩放过滤器是CILanczosScaleTransform。有一个snippet演示了基本用法。

答案 2 :(得分:0)

看看这个小toy app I made

演示CIContext方法的NSImage版本:

- (void)drawInRect:(NSRect)dstRect 
          fromRect:(NSRect)srcRect 
         operation:(NSCompositingOperation)op 
          fraction:(CGFloat)delta

我这样做是为了确切知道这些行为是如何相互关联的。它是交互式的,您可以使用滑块播放并移动/缩放图像。不是解决方案,但它可以帮助您解决问题。