2016-08-11 4 views
0

ディレクトリからイメージを取得し、base64stringに変換してWebサービスを通じて送信する方法。私はディレクトリに画像を持っています。そのイメージを取得し、base64文字列に変換する必要がありますか?

+3

あなたはすでに試したことを何でも見せてもらえますか –

+0

この質問はあまりにも曖昧です。あなたが試したいくつかのコードが必要です。 –

答えて

1

あなたはこれを行うことができます。

// Gets image from your file directory 
UIImage *image = [UIImage imageWithContentsOfFile:@"path/to/your/directory"]; 
// Converts it to NSData type. 
NSData *imageData = UIImageJPEGRepresentation(image, 1); 
// Converts it to base64 string. 
NSString *encodedString = [imageData base64Encoding]; 



// Swift 

var image: UIImage = UIImage.imageWithContentsOfFile("path/to/your/directory")! 
    // Converts it to NSData type. 
var imageData: NSData = UIImageJPEGRepresentation(image, 1) 
    // Converts it to base64 string. 
var encodedString: String = imageData.base64Encoding() 
+0

質問には 'swift'と 'swift2'というタグがあります。答えのコードをSwiftに変更することを検討することもできます。 –

0

私は画像を変換 1.(3例はまったく関係ありません)すべての3つのシナリオが追加されました。 2.ここでは、サーバ

上の画像を投稿ファイルのディレクトリ 3から画像を見つけるには、あなたがここにbase64で画像

//Use image name from bundle to create NSData 
let image : UIImage = UIImage(named:"imageNameHere")! 
//Now use image to create into NSData format 
let imageData:NSData = UIImagePNGRepresentation(image)! 

//OR next possibility 

//Use image's path to create NSData 
let url:NSURL = NSURL(string : "urlHere")! 
//Now use image to create into NSData format 
let imageData:NSData = NSData.init(contentsOfURL: url)! 

を作成する方法であるあなたは、ファイルマネージャから画像を見つける方法です

NSString *searchFilename = @"hello.png"; // name of the PDF you are searching for 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSDirectoryEnumerator *direnum = [[NSFileManager defaultManager] enumeratorAtPath:documentsDirectory]; 

NSString *documentsSubpath; 
while (documentsSubpath = [direnum nextObject]) 
{ 
    if (![documentsSubpath.lastPathComponent isEqual:searchFilename]) { 
    continue; 
    } 

    NSLog(@"found %@", documentsSubpath); 
} 

要求を送信するために、私は

var request = NSMutableURLRequest(URL: NSURL(string: url)) 
request.HTTPMethod = "POST" 
request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
request.addValue("application/json", forHTTPHeaderField: "Accept") 
JSONリクエストを処理するためにNSMutableURLRequestを使用

HTTPBodyを準備するために、イメージをBase64文字列にエンコードする必要がありました。これは、次のようにして行われます。

var imageData = UIImageJPEGRepresentation(image, 0.9) 
var base64String = imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.fromRaw(0)!) // encode the image 

これを実行した後、私はエンコードされた画像を適切なパラメータで辞書に入れました。私はそれをHTTPBodyに割り当てたJSON表現にシリアル化しました。

var err: NSError? = nil 
var params = ["image":[ "content_type": "image/jpeg", "filename":"test.jpg", "file_data": base64String]] 
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions(0), error: &err)! 

共有セッションオブジェクトを使用して要求を送信するタスクを作成しました。私はMutableURLRequestに変換できる要求モデルを作成しました。ここでどのように見えるかを見ることができます。

リクエストが完了すると、completionHandlerを介して渡されたブロックIが実行されます。そこから、私はその反応を評価することができました。それで、私は自分の携帯電話のカメラから撮った画像をサーバに送ることができました。

関連する問題