我正在开发一个完全依赖于图像的应用程序。我有320 * 480之类的图像,现在我想要那些具有768 * 1024尺寸的图像。我可以通过UI设计师获得它并放在我的捆绑包中,但是我的应用程序适用于通用应用程序,因此我需要为iPhone视网膜,iPad,iPad视网膜包含相同的图像。如果我使用多张图像,我的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设计器中获取所有图像。如果我们有正常的图像,我们可以为视网膜显示创建相同的图像吗?
有更好的解决方案吗?
最佳答案
无法从较小的图像创建较大的图像而没有失真或像素化。没有办法神奇地填写其他细节。
现实世界无法像电视或电影那样工作,因为人们会放大图像并神奇地获得很多细节。 :)
当您为以下内容添加5组图像时,如果您的应用程序过大:
那么您有几种选择:
关于iphone - 当我们在iOS中没有像素失真的小图像时,如何创建大图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15587608/