【问题标题】:OSX UIGraphicsBeginImageContextOSX UIGraphicsBeginImageContext
【发布时间】:2015-06-03 14:28:12
【问题描述】:

我现在正在为 Mac OSX 创建一个 iOS 应用程序。我有下面的代码将图像转换为 1024 的大小,并根据图像的纵横比计算出宽度。这适用于 iOS,但显然不适用于 OSX。我不确定如何创建 NSImage 的 PNG 表示或我应该使用什么来代替 UIGraphicsBeginImageContext。有什么建议? 谢谢。

        var image = myImageView.image

        let imageData = UIImagePNGRepresentation(image)
        let imageWidth = image?.size.width
        let calculationNumber:CGFloat = imageWidth! / 1024.0

        let imageHeight = image?.size.height
        let newImageHeight = imageHeight! / calculationNumber

        UIGraphicsBeginImageContext(CGSizeMake(1024.0, newImageHeight))
        image?.drawInRect(CGRectMake(0, 0, 1024.0, newImageHeight))
        var resizedImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        let imageData = UIImagePNGRepresentation(resizedImage)

        let theImageData:NSData = UIImagePNGRepresentation(resizedImage)
        imageFile = PFFile(data: theImageData)

【问题讨论】:

    标签: ios macos nsimage uigraphicscontext uiimagepngrepresentation


    【解决方案1】:

    你可以使用:

    let image = NSImage(size: newSize)
    image.lockFocus()
    //draw your stuff here
    image.unlockFocus()
    if let data = image?.TIFFRepresentation {
        let imageRep = NSBitmapImageRep(data: data)
        let imageData = imageRep?.representationUsingType(NSBitmapImageFileType.NSPNGFileType, properties: [:])
        //do something with your PNG data here
    }
    

    【讨论】:

      【解决方案2】:

      我的两分钱... 使用部分重叠的图像绘制图像的快速扩展:

      extension NSImage {
      
          func mergeWith(anotherImage: NSImage) -> NSImage {
      
              self.lockFocus()
              //draw your stuff here
      
              self.draw(in: CGRect(origin: .zero, size: size))
              let frame2 = CGRect(x: 4, y: 4, width: size.width/3, height: size.height/3)
              anotherImage.draw(in: frame2)
      
              self.unlockFocus()
              return self
          }
      
      }
      

      最终效果:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-21
        • 1970-01-01
        相关资源
        最近更新 更多