嗨,顺便说一句,我真的很难用AGImagePicker把我的NSDocumentDirectory.Im存起来。是的,我能够将它保存在NSDocumentDirectory中。但是如何唯一地保存它们(就它们自己的而言,然后将它们的名字转换成oneSlotImages),或者用它们唯一的ID保存它们,然后再重新加载它们。对不起,我对UIImagePickerControllerMediaURL这个东西有点陌生,我想这可能是我的另一个问题的解决方案,因为我在保存时没有覆盖它们。如何使用其唯一ID或UIImagePickerControllerMediaURL保存此文件。
for (int i = 0; i < info.count; i++) {
NSLog(@"%@", [info objectAtIndex:i]);
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask ,YES );
NSString *documentsDir = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"oneSlotImages%d.png", i]];
ALAssetRepresentation *rep = [[info objectAtIndex: i] defaultRepresentation];
UIImage *image = [UIImage imageWithCGImage:[rep fullResolutionImage]];
//----resize the images
image = [self imageByScalingAndCroppingForSize:image toSize:CGSizeMake(256,256*image.size.height/image.size.width)];
NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:savedImagePath atomically:YES];谢谢你的帮助。非常感谢。
发布于 2012-07-11 14:42:14
每个图像的URL都是唯一的,对吧?所以我们可以利用这个。将URL转换为MD5字符串(形成每个图像的唯一标识符)。并使用该名称保存(如"MD5string.png")。
为什么我们不能用这个?希望这对你有帮助。
要转换为MD5,请创建一个名为NSString+MD5.h的文件,并将代码
#import <Foundation/Foundation.h>
#import <CommonCrypto/CommonDigest.h>
@interface NSString(MD5)
- (NSString *)MD5;
@end在里面。然后在NSString+MD5.m中,
#import "NSString+MD5.h"
@implementation NSString(MD5)
- (NSString*)MD5
{
const char *ptr = [self UTF8String];
unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];
CC_MD5(ptr, strlen(ptr), md5Buffer);
NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x",md5Buffer[i]];
return output;
}
@end将NSString+MD5.h类导入到任何需要将MD5函数与普通NSString对象一起使用的地方。
在您的代码中,如果您有UIImagePickerControllerMediaURL字符串,因为它对于每个文件都是唯一的,您可以将其转换为MD5字符串,如下所示
NSString *imgURL = [NSString stringWithString: UIImagePickerControllerMediaURL];
NSString *MD5String = [imgURL MD5];
NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", MD5String]];使用该路径保存图像文件。
加载时,
将UIImagePickerControllerMediaURL转换为MD5并签入文件的Documents目录
// In this the UIImagePickerControllerMediaURL is the URL of media file to load
NSString *imgURL = [NSString stringWithString: UIImagePickerControllerMediaURL];
NSString *MD5String = [imgURL MD5];
NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", MD5String]];然后使用NSFileManager的fileExistsAtPath方法进行检查,如果存在,则从路径加载文件。就是这样。
注意:为此,您希望将保存在documents目录中的图像的UIImagePickerControllerMediaURL保存在应用程序的本地某个地方(在DB或NSUserDefaults中),以便在加载时使用。
发布于 2012-07-11 14:45:10
您可以始终保留一个使用名称的列表,并执行以下操作
int i = 1;
while([listOfUsedNames containsObject:nextAvailableTile]) {
nextAvailableTitle = [kDefaultImageName stringByAppendingFormat:@" %d", i];
i++;
}//发现未使用的名称
发布于 2012-07-11 14:56:01
试试这个:
NSMutableString *imageName = [[[NSMutableString alloc] initWithCapacity:0] autorelease];
CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault);
if (theUUID) {
[imageName appendString:NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID))];
CFRelease(theUUID);
}
[imageName appendString:@".png"];https://stackoverflow.com/questions/11426609
复制相似问题