我正在开发一个完全依赖图像的应用程序。我有像 320*480 这样的图像,现在我想要那些尺寸为 768*1024 的相同图像。我可以通过 UI 设计师获得它并放在我的包中,但我的应用程序是通用应用程序,所以我需要为 iPhone Retina、iPad、iPad Retina 包含相同的图像。如果我使用多个图像,我的 IPA 大小会增加(例如:如果一个 320*480 的图像现在有 200KB,如果我再次添加 768*1024,我的 IPA 的大小将增加到至少 200KB)。
想法:我只放置 320*480 图像并计划以编程方式创建 768*1024 图像,这意味着我在我的包中只使用了一组图像。
完成的工作:通过查看一些博客,我发现使用下面的代码我们可以创建所需的图像大小。
- (UIImage *)scale:(UIImage *)image toSize:(CGSize)size
{
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
UIImage *smallImage=[UIImage imageNamed:@"1.png"];
UIImage *bigImage=[self scale:smallImage toSize:CGSizeMake(768, 1024)];
[UIImageJPEGRepresentation(bigImage,2.0) writeToFile:[[self applicationDocumentsDirectory]stringByAppendingPathComponent:@"upload.png"] atomically:YES];
问题:上面的代码很酷,可以得到预期的图像大小,但唯一的问题是我在最终图像上出现像素失真。
问题: 是否有任何好的或有效的解决方案可以从小图像中获得不同尺寸且不失真的图像,或者我需要从 UI 设计师那里获取所有图像。如果我们有正常的图像,我们可以为视网膜显示创建相同的图像吗?
有更好的解决方案吗?