Skip to content

Objective-CでZipファイルを解凍してそれを活用する方法

2011年10月3日

必要になったのでつくった。

まずは、以下を使います。
http://code.google.com/p/ziparchive/

これをダウンロードしたら、プロジェクトに追加して、
libz.1.2.3.dylib
も追加します。
あと、展開するZIPファイルもプロジェクトに入れときます。

そしたら、下のようにViewDidLoadに書いたらいけた

    NSString *path = [[NSBundle mainBundle] pathForResource:@"wallpaper" ofType:@"zip"];
    NSString *outdir = [NSHomeDirectory() stringByAppendingPathComponent:@"tmp"];
    NSLog(@"%@",path);

    ZipArchive *za = [[[ZipArchive alloc] init] autorelease];
    [za UnzipOpenFile:path];

    BOOL ret = [za UnzipFileTo:outdir overWrite:YES];
    if(ret==NO) {
        // エラー処理
        NSLog(@"zip archive 解凍時にエラーが発生");
    }
    [za UnzipCloseFile];

    NSString *imagePath = [outdir stringByAppendingPathComponent:@"Dark-Souls_Wallpaper_1280X800.jpg"];
    NSLog(@"[%@]",imagePath);

    NSURL *url     = [[NSURL alloc] initFileURLWithPath:imagePath];
    NSData *data   = [[NSData alloc] initWithContentsOfURL:url];
    UIImage *image = [[UIImage alloc] initWithData:data];

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
    [self.view addSubview:imageView];
    imageView.image = image;

    [imageView release];
    [url release];
    [data release];
    [image release];

解凍したファイルは、outdirで指定しているように、そのアプリ内のtmpディレクトリに展開されます。
シミュレータのディレクトリで確認できる。

展開後、ファイル名を指定してURLに変換し、それをデータとして受け取り、UIImageにする、と。
これで完了です。

広告

From → iPhone開発

コメントする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。