1

我现在正在为 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)
4

2 回答 2

2

您可以使用:

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
}
于 2015-08-03T11:32:44.473 回答
0

我的两分钱...快速扩展以绘制具有部分重叠图像的图像:

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
    }

}

最终效果:

在此处输入图像描述

于 2019-03-13T11:51:15.447 回答