Tag: javax.imageio

iOS4调用ImageNamed:仍然泄漏或导致内存问题?

显然,由于内存不足,我的应用程序在第二代iPod上崩溃。 我所做的是在用户滚动时在scrollView + pageControl内的每个视图上调用图像。 当记忆警告后,应用程序在达到特定点时崩溃。 当我收到警告时,我试图释放视图,但仍然导致崩溃。 我search了一下ImageNamed:显然在这个API调用中有问题,但是大多数文章都说它在最近的iOS版本中已经修复了。 我解决了这个问题,调用图像imageWithContentOfFile而不是imageNamed,但我想知道,如果ImageNamed仍然导致内存泄漏或不释放时,它的视图被释放。

使用ImageIO在iOS上创build渐进式jpeg会在设备上产生块状结果

我试图从UIImage对象创build一个渐进的JPEG,这是我的代码 NSMutableData *data = [NSMutableData data]; NSString *path = [NSHomeDirectory() stringByAppendingPathComponent: @"Library/Caches/test.jpg"]; CFURLRef url = CFURLCreateWithString(NULL, (CFStringRef)[NSString stringWithFormat:@"file://%@", path], NULL); CGImageDestinationRef destination = CGImageDestinationCreateWithURL(url, kUTTypeJPEG, 1, NULL); CFRelease(url); NSDictionary *jfifProperties = [NSDictionary dictionaryWithObjectsAndKeys: (__bridge id)kCFBooleanTrue, kCGImagePropertyJFIFIsProgressive, nil]; NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithFloat:.7], kCGImageDestinationLossyCompressionQuality, jfifProperties, kCGImagePropertyJFIFDictionary, nil]; CGImageDestinationAddImage(destination, ((UIImage*)object).CGImage, (__bridge CFDictionaryRef)properties); CGImageDestinationFinalize(destination); CFRelease(destination); 这在模拟器中运行时效果很好,但不幸的是在设备上产生块状/块状的结果: […]

在iOS上缩小图像的最省内存的方式是什么?

在后台线程中,我的应用程序需要从磁盘读取图像,将它们缩小到屏幕大小(1024×768或2048×1536)并将其保存到磁盘。 原始图像大多来自相机胶卷,但其中一些可能具有较大的尺寸(例如3000×3000)。 之后,在不同的线程中,这些图像经常会缩小到500×500左右的不同大小,并再次保存到磁盘。 这导致我想知道:在iOS,性能和内存方面,最有效的方法是什么? 我使用了两种不同的API: 使用来自ImageIO的CGImageSource和CGImageSourceCreateThumbnailAtIndex ; 绘制到CGBitmapContext并使用CGImageDestination将结果保存到磁盘。 两者都为我工作,但我想知道他们是否有任何差异的性能和内存使用情况。 如果有更好的select,当然。

ImageIO:<ERROR> JPEG损坏的JPEG数据:数据段过早结束iphone – 如何捕捉这个?

我得到这个错误通过HTTP下载一个图像。 我已经看了这里的答案,但即使有效的图像不会从函数返回YES 。 任何其他的想法? 获取图像的代码非常简单。 这发生在后台线程中。 NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]]; UIImage *image = [UIImage imageWithData:data]; 这是该线程的function: – (BOOL)isJPEGValid:(NSData *)jpeg { if ([jpeg length] < 4) return NO; const char * bytes = (const char *)[jpeg bytes]; if (bytes[0] != 0xFF || bytes[1] != 0xD8) return NO; if (bytes[[jpeg length] – 2] != 0xFF […]