2014-02-16 45 views
0

如果我从服务器下载一些图像,我应该调整它以支持视网膜设计?下载图像和视网膜显示

如果现在我不能使用 - @ 2x,我该如何设置正确的图像来显示?

UPDATE:

如果我缓存图像,我需要下载后和缓存之前调整图像和高速缓存2个图像,经常和@ 2倍?

回答

1

你的应用应该检索视网膜大小的那些图像。要获得非视网膜大小,您可以手动缩放并保存。这里的示例代码:

UIImage *image = [UIImage imageNamed:@"[email protected]"]; 

// set non-retina size from current image 
CGSize size = CGSizeMake(image.size.width/2., image.size.height/2.); 


/** scale the image */ 

UIGraphicsBeginImageContext(size); 

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextTranslateCTM(context, 0.0, size.height); 
CGContextScaleCTM(context, 1.0, -1.0); 
CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, size.width, size.height), image.CGImage); 

UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 


/** save scaled image */ 

NSString *basePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
// save with same name but without suffix "@2x" 
NSString *filePath = [NSString stringWithFormat:@"%@/%@", basePath, @"yourRetinaImage"]; 

@try { 
    [UIImagePNGRepresentation(scaledImage) writeToFile:filePath options:NSAtomicWrite error:nil]; 
} @catch (NSException *exception) { 
    NSLog(@"error while saving non-retina image with exception %@", exception); 
} 
+0

我已经更新了我的答案 – nvl

+0

谢谢看起来不错,如果我缓存图像,我需要下载后和缓存之前,使用上面的代码,并且缓存2个图像,经常和@ 2倍? – user3300062