2016-08-13 5 views
0

私は後でそれらを圧縮するためにiOS 8のMedia/DCIMフォルダから画像をロードしようとしているので、このスクリプトを書き始めました。UUImage imageWithContentsOfFile is nill

int main(int argc, char **argv, char **envp) { 

    NSString *str = @"Media/DCIM/101APPLE/IMG_1022.JPG"; 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    BOOL success = [fileManager fileExistsAtPath:str]; 

    if(!success) 
    { 
     NSLog(@"File not found at given path"); 
    } 
    else 
    { 
     //NSString *path = [[NSBundle mainBundle] pathForResource:str ofType:nil]; 
     //UIImage* image = [UIImage imageWithContentsOfFile:path]; 
     UIImage* image = [UIImage imageWithContentsOfFile:str]; 
     CIImage *cim = [image CIImage]; 

     if (cim == nil) 
     { 
      NSLog(@"File found at given path, but failing to allocate it as an UUImage obj"); 
     } 
     else 
     { 
      NSLog(@"All good !"); 
      [image release]; 
     }                               
    } 
    return 0; 
} 

出力は、「指定されたパスにあるファイルを、しかしUUImageのOBJとしてそれを割り当てることができない。」を与えます

ファイルが見つかりましたが、それをUUImageタイプとして読み込むことができないという考えはありますか? 私はNSBundleとしてパスを読み込もうとしましたが、まだ運がありません。

おかげで、事前

FIXED

でたくさん:システムがサンドボックス化されているため、ニコラスの答え

+0

デバッグの手順として、NSDataにファイルの内容を渡してから、UIImage imageWithDataを取得できるかどうかを確認します。データが取得できない場合は、ファイルを読み込む際に問題があります。あなたはデータを取得しますがイメージはありません。問題は、ファイルの内容が有効なイメージを形成していないことです(今まで行ってきた作業が後者の証拠を提供します) – danh

+0

あなたの答えはダンにありがとう、 NSDataでそれを行い、[UIImage imageWithData:imageData]を実行しましたが、まだ失敗しています。私はそれがカメラのロールからその写真のような有効な画像ではないと思う、私はそれらを編集したことはない、彼らはiPhone自体によって作成されます。私がssh経由で直接ダウンロードした場合は、エラーが発生してもそれらを開くことができます – jthemovie

答えて

3

のコメントに回答するだけで、あなたは、iOSでMedia/DCIMフォルダにアクセスすることはできません。 the documentationによると、あなたのアプリケーションは、あなたのアプリケーションフォルダのこれらのサブフォルダに直接ファイルを読み書きすることができますのような他の目的のために

  • Documents/
  • Documents/Inbox/
  • Library/
  • tmp/

をあなたが選んだ写真、ビデオ、曲は、iOSの指定されたピッカーを使用する必要があります。

カメラロールから画像を選択する必要があるため、代わりにUIImagePickerControllerオブジェクトを使用する必要があります。ピッカーコントローラで選択された画像に適切なUIImageを返します。

NSFileManagerについては、NSHipsterのthis articleをご覧ください。 this questionの内容も読んでください。

+0

私のiPhoneのrootであるNicolasに感謝します。このスクリプト(theos)はアプリではありませんが、バックグラウンドでデーモンとして動作するobjective- 、UIはありませんので、私の推測では、rootとして、私は何の制約もありません。私はアクセスできるパスを与えています、NSFileManagerはそれを確認します。私はデーモンとして実行するこのようなseveralsプログラムを持っていて、私はrootとして(sudo経由で)実行しているときにディレクトリのどのような種類のファイルを書くことがあったことはありません – jthemovie

+0

私はモバイルユーザーのDocumentsフォルダ内に画像を入れてみました/ var/mobile/Documents)にアクセスする必要がありますが、NSFileManagerはそのファイルを見つけますが、UUImageとして割り当てることはできません:/ – jthemovie

+0

あなたの状況を理解していますが、通常のアプリ。アプリケーションのパスは '/ var/mobile/Containers/Data/Application /(Application UUID)'なので、 '/ var/mobile /'を 'Media/DCIM/... 'の前に追加しようとしましたか?多分それはうまくいくかもしれない、多分... –

関連する問題