2016-06-27 13 views
0
NSString *base64String = [UIImagePNGRepresentation(myimage) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; 

私は、base64文字列にuiimageを変換しようとしています。しかし、私はそれが間違った結果をもたらすと思います。これは、この文字列を与える:Objective-CのBase64エンコーディング

iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAA \ rを\ nABxpRE9UAAAAAgAAAAAAAAAMAAAAKAAAAAwAAAAMAAAAnHRoHj4AAABoSURBVEgN \ rを\ nYvj // z8DLTFNDQc5fNQCgiHAcJSBxekYA + MmIN5PZbwJZDbDMQam + 0D8n0b4PtAC \ rを\ nxnU0MhzoaMZ1QAsYhIAWnKOBJUAzGYTAkUQDS8CGo + QDKloCNxzFAhCHCpagGA4y \ rを\ nEwAAAP // PscxrwAAAGxJREFU7ZJBCsAgDASX/QB + 22cVPPZLafZQsGDM2rOHhZDE \ rを\ nGQjCzNCnAaXhuD22GH + D0rNYf + Dv8IdkCA8FHCxIQvhUIEqm8FSQSFK4JAgkElwW \ rを\ ncPECTv9VlWHNnhJpSQFFO1uQXiBdiG6r9h9C14aGNgNBwQAAAABJRU5ErkJggg ==

しかし、これは空の画像です。なにが問題ですか?

+0

あなたはあなたのバージョンを確認し、それはこれが私のと同じであるあなたhttp://stackoverflow.com/questions/11251340/convert-between-uiimage-and-base64-string –

+0

を助けるこれをチェックすることができます。あなたが – user

+0

は、私はあなたがイメージbase64文字列を変換しているのはなぜ私の答え –

答えて

0

変更:

NSString *base64String = [UIImagePNGRepresentation(myimage) base64EncodedStringWithOptions:NSDataBase64DecodingIgnoreUnknownCharacters]; 

:をエンコード

NSString *base64String = [UIImagePNGRepresentation(myimage) base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; 

タイプ:デコード

NSDataBase64Encoding64CharacterLineLength  
    NSDataBase64Encoding76CharacterLineLength  
    NSDataBase64EncodingEndLineWithCarriageReturn  
    NSDataBase64EncodingEndLineWithLineFeed 

タイプ:

NSDataBase64DecodingIgnoreUnknownCharacters 

画像のエンコード中にデコードのタイプを使用しています

+0

これで問題が解決する理由を説明してください。 – Avi

+0

はい回答を更新しました – KDeogharkar

+0

すべてのエンコードタイプを試しましたが、動作しませんでした。同じ結果が得られます。 – user

0

ポストデータでは、Base64の "+"文字は ""に変換されました。

だから、無効なbase64文字列を持っています。

UIImage *img = [UIImage imageNamed:@"white.jpeg"]; 
NSData *imageData = UIImagePNGRepresentation(img); 
NSString *imageString = [imageData base64EncodedStringWithOptions:0]; // type one 

NSString *imageString = [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; 
//type two 
NSString *str = [imageString stringByReplacingOccurrencesOfString:@"+" withString:@" "]; 

希望すると、これが役立ちます。エンコード文字列を実現するいずれかのタイプ

0

一般に、イメージをBase64エンコーディングに変換するときは、イメージのデコードを変換する必要があります。イメージのみをエンコードします。デコード済みのフォーマットに変換する必要があります。

エンコーディング

UIImage *imageEncode = [UIImage imageNamed:@"yourImage.png"]; // or yourImage.jpeg 
NSData *dataImageEncode = UIImageJPEGRepresentation(imageEncode, 1.0); 
      //OR 
NSData *dataImage = UIImagePNGRepresentation(image); 
NSString *strEncodedBase64 = [dataImageEncode base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; 

デコード

NSData *dataImageDecode = [[NSData alloc]initWithBase64EncodedString:strEncodedBase64 options:NSDataBase64DecodingIgnoreUnknownCharacters]; 
UIImage *imageDecode = [UIImage imageWithData:dataImageDecode]; 
0

私はあなただけuiimageを渡す必要がありますする一つの方法を作った、それがbase64文字列を返します。

- (NSString *)encodeToBase64String:(UIImage *)image { 
    return [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; 
} 
関連する問題