3

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;
}

}

4

1 に答える 1

0
imageData = UIImagePNGRepresentation(image);

両方の場合に使用するとどうなりますか?

于 2012-05-18T09:13:06.087 に答える