旋转存储在文档目录中的图像

时间:2013-11-19 05:49:41

标签: ios objective-c

我编写了一个应用程序,允许用户拍摄存储在NSArray中的照片,然后保存在Documents directory中。重新加载图片时,图片会存储在UITableView中 - 注意,由于问题1,目前只会加载一张照片。

我有两个问题:

1 - 这只适用于一张照片,因为我需要能够计算出已存储了多少张照片。

2 - 当我重新加载数据并放入UIImageView时,照片的旋转不正确。风景照片是颠倒的,肖像照片是风景照片。

对这些问题中的任何一个的任何帮助都非常感谢。

保存照片

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

for (int i=0;i<photoCount;i++)
{
    UIImage *image = [photos objectAtIndex:i];
    NSString *savePicturePath = [saveFolderPath stringByAppendingPathComponent:[NSString stringWithFormat:@"image_%d",i]];
    NSData *imageData = UIImagePNGRepresentation(image);
    [imageData writeToFile:savePicturePath atomically:NO];
}

检索照片

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *getPicPath = [documentsDirectory stringByAppendingPathComponent:@"image_0"];
NSData *picData = [[NSFileManager defaultManager] contentsAtPath:getPicPath];

UIImage *loadedImage = [UIImage imageWithData:picData];
[photos addObject:loadedImage];
[self.tableView reloadData];

将图片添加到表格

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"photoCell"];
UIImage *currentImage = [self.photos objectAtIndex:indexPath.row];
cell.imageView.image = currentImage;
return cell;
}

2 个答案:

答案 0 :(得分:1)

您可以通过创建自己的目录并将所有图像存储到该目录来解决第一个问题。然后,当您阅读use NSFileManager's contentsOfDirectoryAtPath以获取该目录中所有图像的数组时。或者您可以阅读文档文件夹的内容并使用NSPredicate按文件扩展名过滤掉图像(使用filteredArrayUsingPredicate)。

至于轮换问题,答案可用here

答案 1 :(得分:0)

轮换问题......简单:

更改

NSData *imageData = UIImagePNGRepresentation(image);

NSData *imageData = UIImageJPGRepresentation(image, 1.0);

一切都很完美。感谢Joel指出我正确的方向。