【问题标题】:Adding a shadow over an image in Swift在 Swift 中为图像添加阴影
【发布时间】:2019-05-23 22:58:35
【问题描述】:

该项目取自 garnele007 的 SwiftOCR。在 Swift 项目中有一个 NSImage (也转换为 .png 用于保存),我想在上面添加一个阴影。存在几个在视图控制器等中添加阴影的示例,但到目前为止,我还没有找到如何使用 Core Graphics/Image 之类的东西添加阴影的示例。我的想象力给了我类似的东西

randomImg.CGAddShadow(阴影:真实,重量:中等)

一些使用 UIKit 的指令对这个 MacOS 项目不起作用。其他人为了用户的利益添加了一个临时图层,但不保存仍然应用阴影的文件。

目前的代码如下所示:


            let customImage: (String) -> OCRImage = { code in
                let randomImg = randomImage()
                randomImg.lockFocus()

                randomImg.draw(in: CGRect(origin: CGPoint.zero, size: randomImg.size))


                NSString(string: code).draw(in: CGRect(origin: CGPoint(x: 0, y: -15.5 ), size: randomImg.size), withAttributes: randomFontAttributes())

                randomImg.unlockFocus()


                let data = NSBitmapImageRep(data: randomImg.tiffRepresentation!)?.representation(using: .png, properties: [:])

                 return randomImg
            }

希望最终结果是一个修改过的文件,上面有阴影,可以保存并稍后查看。

感谢您的任何建议

【问题讨论】:

    标签: swift cocoa swiftocr


    【解决方案1】:

    我最终使用的解决方案(随机棕褐色过滤器):

    
                let context = CIContext()
    
                // Load originalCIImage with contents of the URL
                var imageURL = Bundle.main.urlForImageResource(NSImage.Name(rawValue: "image.png"))
                var originalCIImage = CIImage(contentsOf: imageURL!)
    
                // Declare func for filter
                func sepiaFilter(_ input: CIImage, intensity: Double) -> CIImage?
                {
                    let sepiaFilter = CIFilter(name:"CISepiaTone")
                    sepiaFilter?.setValue(input, forKey: kCIInputImageKey)
                    sepiaFilter?.setValue(intensity, forKey: kCIInputIntensityKey)
                    return sepiaFilter?.outputImage
                }
    
                // call the filter func on the image
                let sepiaCIImage = sepiaFilter(originalCIImage!, intensity:0.9)
    
                // change the image from CIImage type to NSImage type
                let rep = NSCIImageRep(ciImage: sepiaCIImage!)
                let filteredImage = NSImage(size: rep.size)
                filteredImage.addRepresentation(rep)
    
                // change from NSImage type to .png format
                let filterData = NSBitmapImageRep(data: filteredImage.tiffRepresentation!)?.representation(using: .png, properties: [:])
    
                // save the png file to the desktop
                do {
                    try filterData?.write(to: (FileManager.default.urls(for: .desktopDirectory, in: .userDomainMask).first?.appendingPathComponent("FILTEREDIMAGE.png"))!)
                }
                catch _ {
                    print("Adding filter to picture error")
                }
    
    // END Sepia Filter
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多