调整 iPad2 - swift 图标的图像大小

Resizing image for icons for iPad2 - swift

用于调整图像大小的简单代码,即导航栏(来源 link)对于具有原生分辨率的 png 图像:722x1028

let imageView = UIImageView(frame: CGRectMake(0, 0, 0, 60))
imageView.image =  UIImage(named: "girl")
imageView.contentMode = UIViewContentMode.ScaleAspectFit
self.navigationItem.titleView = imageView

然后我上了 iPad2:
我可以通过更改代码手动渲染所需的图像:

let imageView = UIImageView(frame: CGRectMake(0, 0, 0, 60))
imageView.image = imageWithImage(UIImage(named: "girl")!, scaledToSize: CGSizeMake(42,60))
self.navigationItem.titleView = imageView

func imageWithImage(image:UIImage, scaledToSize newSize:CGSize) -> UIImage{
            UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0);
            image.drawInRect(CGRectMake(0, 0, newSize.width, newSize.height))
            let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            return newImage
        }

但这是相当昂贵的解决方案。

是否有本机库或简单的 swift 解决方案可以使 png 图像自动调整大小并保持良好的质量?

如果您将所有设备的大小硬编码为 42x60 点,最好的解决方案是提供该大小的预渲染图像。这对电池友好,并允许在添加到应用程序之前在高质量编辑器中调整图像:从 1000 像素调整到 60 像素有点过激,会导致细节丢失。

如果那不可能(即图像是从互联网等动态加载的),我会从 CIImageCIFilter(name: "CILanczosScaleTransform") 开始我的研究,它们提供非常好的插值质量,可能后面是 CISharpenLuminance 如果细节丢失太高。