用于调整图像大小的简单代码,即导航栏(来源 link ),用于具有 native 分辨率的 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
}
但这是相当昂贵的解决方案。
是否有本地库或简单的快速解决方案可以使 png 图像自动调整大小并保持良好的质量?
最佳答案
如果您对所有设备都有硬编码尺寸 42x60 点,则最好的解决方案是提供该尺寸的预渲染图像。这对电池很友好,并且允许在添加到应用程序之前在高质量编辑器中调整图像:从 1000 像素调整到 60 像素有点剧烈,会导致细节丢失。
如果这是不可能的(即从互联网动态加载图像等),我会从 CIImage
和 CIFilter(name: "CILanczosScaleTransform")
开始我的研究它提供了非常好的插值质量,如果细节损失太高,可能会接着使用 CISharpenLuminance。
关于swift - 调整 iPad2 图标图像大小 - swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32673330/