【问题标题】:How to split image with Swift for OSX如何使用 Swift for OSX 分割图像
【发布时间】:2015-01-06 00:07:31
【问题描述】:

我将一张 2880 x 2560 的图像分割成两个 1440 x 2560 的图像。我一直在尝试使用CGImageForProposedRect 来做到这一点,但我不确定我是否正确地接近它。这是我到目前为止的内容(显示操场输出,最后附上代码):

但是,如果您注意到,即使 CGRect 是 1440x2560,leftImagerightImage 也不是。 CGImageForProposedRect 不是这样工作的吗?如果不是,为什么需要 CGRect 参数?

import Cocoa
import AppKit
import CoreGraphics

let image = NSImage(named:"image")
if let image = image {
    var imageRect:CGRect = CGRectMake(0, 0, image.size.width, image.size.height)
    var imageRef = image.CGImageForProposedRect(&imageRect, context: nil, hints: nil)

    var leftImageRect:CGRect = CGRectMake(0, 0, image.size.width/2.0, image.size.height)
    var leftImageRef = image.CGImageForProposedRect(&leftImageRect, context: nil, hints: nil)
    var leftImage = NSImage(CGImage:leftImageRef!.takeUnretainedValue(), size:NSZeroSize)

    var rightImageRect:CGRect = CGRectMake(image.size.width/2.0, 0, image.size.width/2.0, image.size.height)
    var rightImageRef = image.CGImageForProposedRect(&rightImageRect, context: nil, hints: nil)
    var rightImage = NSImage(CGImage:rightImageRef!.takeUnretainedValue(), size:NSZeroSize)
}

【问题讨论】:

    标签: macos swift xcode6 cgrect cgimage


    【解决方案1】:

    好像换了

    var leftImageRef = image.CGImageForProposedRect(&leftImageRect, context: nil, hints: nil)
    var leftImage = NSImage(CGImage:leftImageRef!.takeUnretainedValue(), size:NSZeroSize)
    

    var leftImageRef = CGImageCreateWithImageInRect(imageRef!.takeUnretainedValue(), leftImageRect)
    var leftImage = NSImage(CGImage:leftImageRef, size:NSZeroSize)
    

    解决了我的问题。但是我仍然不确定为什么,所以如果有人有更好的解释,我愿意选择它作为“正确答案”。

    谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      • 2022-10-17
      • 2011-02-06
      • 2012-01-06
      • 1970-01-01
      相关资源
      最近更新 更多