调整 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 像素有点过激,会导致细节丢失。
如果那不可能(即图像是从互联网等动态加载的),我会从 CIImage
和 CIFilter(name: "CILanczosScaleTransform")
开始我的研究,它们提供非常好的插值质量,可能后面是 CISharpenLuminance
如果细节丢失太高。
用于调整图像大小的简单代码,即导航栏(来源 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 像素有点过激,会导致细节丢失。
如果那不可能(即图像是从互联网等动态加载的),我会从 CIImage
和 CIFilter(name: "CILanczosScaleTransform")
开始我的研究,它们提供非常好的插值质量,可能后面是 CISharpenLuminance
如果细节丢失太高。