// get file absolutely path in the caches directory
NSString* pathInCacheDirectory(NSString *fileName)
{
NSArray *cachePaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [cachePaths objectAtIndex:0];
return [cachePath stringByAppendingPathComponent:fileName];
}
// create directory in the caches directory
bool createDirInCache(NSString *dirName)
{
NSString *imageDir = pathInCacheDirectory(dirName);
BOOL isDir = NO;
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL existed = [fileManager fileExistsAtPath:imageDir isDirectory:&isDir];
bool isCreated = false;
if ( !(isDir == YES && existed == YES) )
{
isCreated = [fileManager createDirectoryAtPath:imageDir withIntermediateDirectories:YES attributes:nil error:nil];
}
return isCreated;
}
// delete directory in the caches directory
bool deleteDirInCache(NSString *dirName)
{
NSString *imageDir = pathInCacheDirectory(dirName);
BOOL isDir = NO;
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL existed = [fileManager fileExistsAtPath:imageDir isDirectory:&isDir];
bool isDeleted = false;
if ( isDir == YES && existed == YES )
{
isDeleted = [fileManager removeItemAtPath:imageDir error:nil];
}
return isDeleted;
}
// save Image to the caches directory
bool saveImageToCacheDir(NSString *directoryPath, UIImage *image, NSString *imageName, NSString *imageType)
{
BOOL isDir = NO;
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL existed = [fileManager fileExistsAtPath:directoryPath isDirectory:&isDir];
bool isSaved = false;
if ( isDir == YES && existed == YES )
{
if ([[imageType lowercaseString] isEqualToString:@"png"])
{
isSaved = [UIImagePNGRepresentation(image) writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"png"]] options:NSAtomicWrite error:nil];
}
else if ([[imageType lowercaseString] isEqualToString:@"jpg"] || [[imageType lowercaseString] isEqualToString:@"jpeg"])
{
isSaved = [UIImageJPEGRepresentation(image, 1.0) writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"jpg"]] options:NSAtomicWrite error:nil];
}
else
{
NSLog(@"Image Save Failed\nExtension: (%@) is not recognized, use (PNG/JPG)", imageType);
}
}
return isSaved;
}
// load Image from caches dir to imageview
NSData* loadImageData(NSString *directoryPath, NSString *imageName)
{
BOOL isDir = NO;
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL dirExisted = [fileManager fileExistsAtPath:directoryPath isDirectory:&isDir];
if ( isDir == YES && dirExisted == YES )
{
NSString *imagePath = [directoryPath stringByAppendingString : imageName];
BOOL fileExisted = [fileManager fileExistsAtPath:imagePath];
if (!fileExisted) {
return NULL;
}
NSData *imageData = [NSData dataWithContentsOfFile : imagePath];
return imageData;
}
else
{
return NULL;
}
}