【问题标题】:large image size problems大图像尺寸问题
【发布时间】:2011-02-15 05:37:44
【问题描述】:

我在 UIImage 中加载大小为 1800x1300 的图像。(从服务器获取图像..)然后我将该图像添加到 UIscrollview。在滚动我的图像时,应用程序崩溃了。这是图像大小问题吗.. ...?提前致谢。

【问题讨论】:

  • 设备内存大约为 9MB,然后我认为在 iOS 应用程序中处理它并非不可能(即使使用旧设备)。这取决于您的应用程序的其余部分,并更好地管理内存以让应用程序在图像出现时释放一些空间。
  • 你的图片太大了,因为你需要这个尺寸来在你的UIScrollView 中显示一些细节,或者只是因为你得到了它?因为如果你不需要那个大小,你可以先在服务器端调整图片大小来获取它。

标签: iphone memory-management


【解决方案1】:
UIImage *image = [UIImage imageNamed:@"image.png"]; 
NSData *imgData = UIImageJPEGRepresentation([UIImage imageWithCGImage:[image CGImage]],0.5);
UIImage *compressedImage = [UIImage imageWithData:mgData];

【讨论】:

  • @Manjunath:谢谢..但是我正在从服务器获取 PNG 图像..我该怎么办..?
  • 获取 png 或 jpeg 并不重要。查看编辑后的答案。
  • 问题是,如果应用程序在您尝试加载它时崩溃,如果您尝试在客户端“压缩”它,您将始终遇到崩溃,因为要调整图像大小,您仍然需要将其加载到内存中...
  • 是的..压缩后,我加载它..仍然崩溃...任何其他方式..?
【解决方案2】:

您绝对应该大幅缩小图像,尤其是 iPhone 屏幕尺寸。

您还应该在不影响质量的情况下尽可能多地压缩图像。我假设您的图像大约在 1.5MB - 2MB 左右,因此如果内存占用过多,则会导致您的设备每次都崩溃。

【讨论】:

  • ya.thank u.. 但是如何缩放我的图像....?使用 UIGraphicsBeginImageContext(newSize); [图像 drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();........?
  • 不,你需要在图形编辑器中完成,我建议Preview,Mac OS X 内置的图像编辑器。
  • 但我正在从网络服务器获取图像.. 我如何使用“预览”进行编辑....?
  • 图像在您正在加载到 UIScrollView 的服务器上?如果是这样,那么您需要在问题中指定。
  • 对不起..我正在从服务器获取图像..我如何调整它的大小..?
猜你喜欢
  • 2012-06-17
  • 2013-03-31
  • 2019-01-25
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多