Swift 3 Color Space macOS不是IOS

用户名

如何将RGB图像转换为其灰度颜色空间?我可以找到很多针对iOS的代码,但找不到针对macOS的代码。而且Apple的文档都以客观的C ....

    let width = image.size.width
    let height = image.size.height
    let imageRect = NSMakeRect(0, 0, width, height);
    let colorSpace = CGColorSpaceCreateDeviceGray();


    let bits = image.representations.first as! NSBitmapImageRep;
    bitmap!.representationUsingType(NSBitmapImageFileType.NSPNGFileType, properties: nil)


    let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.none.rawValue);
    let context = CGContext(data: nil, width: Int(width), height: Int(height), bitsPerComponent: 8, bytesPerRow: 0, space: colorSpace, bitmapInfo: bitmapInfo.rawValue);
    context.draw(image.cgImage!, in : imageRect);// and this line is wrong obviously..

这就是我到目前为止所得到的..只是从互联网上复制和粘贴..但是我不知道如何进一步...

用户名

我找到了一种有趣的方式来执行此操作。.我的代码只是从下面的三个来源中复制而来。

如何从nsimage快速创建灰度图像?

使用COCOA和NSImage的灰度图像

更改NSImage的色彩空间:第二个答复

我的代码:

func saveImage(image:NSImage, destination:URL) throws{
    let rep = greyScale(image);
    var data = rep.representation(using: NSJPEGFileType, properties: [:]);
    try data?.write(to: destination);

}

// rgb2gray
func greyScale(image: NSImage) -> NSBitmapImageRep{
    let w = image.size.width
    let h = image.size.height
    let imageRect : NSRect! = NSMakeRect(0,0, w, h);
    let colourSpace : ColourSpace! = CGColorSpaceCreateDeviceGray();
    let context : CGContext! = CGContext(data: nil, width: Int(w), 
                                        height: Int(h), bitsPerComponent: 8, 
                                        bytesPerRow: 0, space: colorSpace, 
                                        bitmapInfo: CGImageAlphaInfo.none.rawValue);        

    context.draw(nsImageToCGImage(image: image), in: imageRect);
    let greyImage : CGImage! = context.makeImage();

    return NSBitmapImageRep(cgImage: greyImage);
}


func nsImageToCGImage(image: NSImage) -> CGImage{
    if let imageData = image.tiffRepresentation as NSData! {
        let imageSource : CGImageSource! = CGImageSourceCreateWithData(imageData, 
                                        nil);
        let image = CGImageSourceCreateImageAtIndex(imageSource, 0, nil);
        return image;
    }
    return nil;
}

我仍在尝试了解其背后的原理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift无法导入Sqlite3 iOS

来自分类Dev

Swift主从模板问题(iOS 8 beta 3)

来自分类Dev

ios Swift解析:从3个类中收集数据

来自分类Dev

iOS Swift将mp3转换为AAC

来自分类Dev

在iOS 10中添加本地通知-Swift 3

来自分类Dev

Swift 3 iOS兼容性

来自分类Dev

Swift3 iOS-如何使UITapGestureRecognizer触发功能

来自分类Dev

注册推送通知Swift 3 + iOS 10

来自分类Dev

使用Swift在IOS中从S3缓存AWSMobileHub图像

来自分类Dev

iOS 10和Swift 3转换问题

来自分类Dev

Swift 3 / iOS 10 Today视图小部件

来自分类Dev

如何使用VK_COLOR_SPACE_PASS_THROUGH_EXT?

来自分类Dev

iOS Swift 3使用UIButton而不是UIBarButton编码tableview编辑按钮

来自分类Dev

带有CIAffineClamp过滤器的MacOS和Swift 3

来自分类Dev

Swift 3:如果let语句崩溃而不是执行else块

来自分类Dev

Swift 3我的tableView不是populatinG吗?

来自分类Dev

如何获取NSMetadataItem的URL-macOS Cocoa Swift 3

来自分类Dev

Swift 3-下载JPEG图像并保存到文件-macOS

来自分类Dev

如何在 osx(不是 iOS)上使用 swift 3 获得最高输出

来自分类Dev

swift 3 ios tableview 按单元滚动

来自分类Dev

Swift 3:过滤 IOS 通知

来自分类Dev

iOS Swift 3 发布问题

来自分类Dev

iOS Swift 3 POST 问题

来自分类Dev

swift 3, iOS - UIImageView 背景

来自分类Dev

Swift 3/macOS:在特定屏幕上打开窗口

来自分类Dev

AWS 分析 - swift 3 - iOS?

来自分类Dev

iOS Swift 3 CompletionHandler 不起作用

来自分类Dev

从文档目录中获取图像而不是文件路径 Swift 3

来自分类Dev

Swift 3 - iOS 11.2 上的 UICollectionview 问题