png 画像を NSData (キャッシュ用) としてディスクに保存しています。読み取り時に透明ピクセルの代わりに黒色が表示されます。それを修正する方法??
これは私がディスクに保存するために使用しているものです:
-(void)cacheImage:(UIImage *)image forURL:(NSURL *)url {
NSURL *cacheFileURL = [[self asyncableCachesDirectory] URLByAppendingPathComponent:[[url absoluteString] MD5]];
NSData *imageData = nil;
switch ([self imageTypeForJTDynamicImageURL:url]) {
case AsyncableImageTypeJPEG:
imageData = UIImageJPEGRepresentation(image, 1);
break;
case AsyncableImageTypePNG:
imageData = UIImagePNGRepresentation(image);
break;
default:
break;
}
NSError *error = nil;
[imageData writeToURL:cacheFileURL options:0 error:&error];
}
これは私が画像を読むために使用しているものです:
-(UIImage *)imageFromCacheForURL:(NSURL *)url {
UIImage *image;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *urlHash;
NSURL *cacheFileURL;
image = [self.images objectForKey:[url absoluteString]];
// if we already have the full size image in memory just return it.
if (image) {
debug(@"---Asyncable returning full size image from memory for url: %@", url);
return image;
}
// check disk for full size image
urlHash = [[url absoluteString] MD5];
cacheFileURL = [[self asyncableCachesDirectory] URLByAppendingPathComponent:urlHash];
image = [UIImage imageWithData:[fileManager contentsAtPath:[cacheFileURL path]]];
if (image) {
[self.images setObject:images forKey:url];
debug(@"---Asyncable returning full size image from disk for url: %@", url);
return image;
}
}