0

您好:我的应用程序中有一个照片上传器,可以让玩家上传他们自己的照片以在我的应用程序中使用。我裁剪并调整每个上传的图像的大小以创建两个图像:一个 X×X 像素图像(用于非视网膜显示器)和一个 2X×2X 像素图像(用于视网膜显示器)。

然后我将这两个图像保存到本地播放器的 Private Documents 目录,其中 photoDataNonRetina[photoDataNonRetina writeToFile:pathNonRetina atomically:YES][photoDataRetina writeToFile:pathRetina atomically:YES]photoDataRetina 是 NSData 对象,每个图像的文件名分别是photo.pngphoto@2x.png

随后我应该如何从本地 Private Documents 目录中检索我的图像,以便根据设备是否具有视网膜显示器来检索适当的图像?现在我猜想做一些类似于以下的事情:

NSString *path = [[self pathForPlayer:player] stringByAppendingPathComponent:@"photo.png"];
return [UIImage imageWithContentsOfFile:path];

除了这似乎只加载非视网膜图像?

4

3 回答 3

0

尝试这个:

if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)]            &&
([UIScreen mainScreen].scale == 2.0)) {
  // Retina display
} else {
  // non-Retina display
}
于 2012-12-20T19:17:36.333 回答
0

只需从文件名中删除扩展名。

NSString *path = [[self pathForPlayer:player] stringByAppendingPathComponent:@"photo"];
return [UIImage imageWithContentsOfFile:path];
于 2012-12-20T21:23:48.300 回答
0

也许这个?

if ([[UIScreen mainScreen].scale > 1) {
  NSString *path = [[self pathForPlayer:player] stringByAppendingPathComponent:@"photo@2x.png"];
  UIImage * image = [UIImage imageWithContentsOfFile:path];
  UIImage * retinaImage = [UIImage imageWithCGImage:[image CGImage] scale:2 orientation:[image imageOrientation]];
  return retinaImage;
} else {
  NSString *path = [[self pathForPlayer:player] stringByAppendingPathComponent:@"photo.png"];
  return [UIImage imageWithContentsOfFile:path];
}
于 2012-12-20T21:21:36.047 回答