web-dev-qa-db-fra.com

Chargement d'une image à partir du répertoire de documents

Je n'arrive pas à afficher mon image (.png).

Je vérifie qu'il existe sur le chemin que j'utilise, et c'est le cas. Mais aucune image n'apparaît.

Voici ce que j'ai essayé:

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

NSString *outputPath    = [documentsDir stringByAppendingPathComponent:[fileList objectAtIndex:indexPath.row]];

NSFileManager *fileManager = [[[NSFileManager alloc] init] autorelease];



NSString *imgPath = [[outputPath stringByReplacingOccurrencesOfString:@"mov" withString:@"png"]retain];


if ([fileManager fileExistsAtPath:imgPath]) 
{
    NSLog(@"FOUND IMG");
    NSLog(imgPath);
}


NSData *imgData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:imgPath]];
UIImage *thumbNail = [[UIImage alloc] initWithData:imgData];
UIImageView * imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 120, 120)];
[imgView setImage:thumbNail];

[cell addSubview:imgView];
[imgView release];

La sortie de débogage qui confirme que le fichier existe 

FOUND IMG
2011-12-26 12:42:23.066 iGeo2[412:707] /var/mobile/Applications/1A2B0D85-CDB1-4E4B- 
9509-EF68B1A0E720/Documents/0.009000.png

Je suis un peu dérouté. Quelqu'un voit où j'ai commis l'erreur?

Merci beaucoup, - Code

J'ai essayé quelques autres méthodes, mais rien ne semble jamais.

19
user440096

Vous devriez utiliser [NSURL fileURLWithPath:imgPath] au lieu de [NSURL URLWithString:imgPath]. Le chemin de l'image n'est pas une URL valide, il nécessite un préfixe file://.

17
iHunter

Essayez d'utiliser

NSData *imgData = [NSData dataWithContentsOfFile:imgPath];
UIImage *thumbNail = [[UIImage alloc] initWithData:imgData];

ou

NSData *imgData = [[NSData alloc] initWithContentsOfURL:[NSURL fileURLWithPath:imgPath]];
UIImage *thumbNail = [[UIImage alloc] initWithData:imgData];
21
YuAo

Vous devez donner l’URL du fichier qui sera

NSURL *imgURL = [NSURL fileURLWithPath:imgPath];

puis initialisez votre image avec la bonne imgURL var et, enfin, pour ajouter l'image à votre cellule, vous devez procéder comme suit

[cell.contentView addSubview:imgView];

J'espère que cela peut résoudre votre problème.

4
Arslan
imageView.image = [UIImage imageWithContentsOfFile:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"Filename"]];
3
Bobby

Swift 4

Code:

extension FileManager {
    class func getImage(named: String) -> UIImage? {
        let imagePath = getImagePath(named: named)
        return UIImage(contentsOfFile: imagePath)
    }

    class func getImagePath(named: String) -> String {
        let fileManager = FileManager.default
        let documentDir = try! fileManager.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
        return documentDir.appendingPathComponent(named).path
    }
}

Usage:

let image = FileManager.getImage(named: "image.png")
1
Zaid Pathan

Votre URL est parfaite.

Vous devez initialiser l'image avec la ligne suivante

UIImage *thumbNail=[UIImage imageWithContentsOfFile:imagePath];

maintenant fais ça

[imgView setImage:thumbNail];

[cell addSubview:imgView];
0
Pankaj purohit