私はこの技術に不慣れです。私はたくさん検索しましたが、関連するものが見つかりません。私のアプリケーションでは、Web サービスからバイト配列を受け取っています。Web サービスから受け取ったバイト配列は
[137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,1,195,0,0,1,195,8,2,0 ,0,0,215,2... ]
そして、このバイト配列をUIImageViewに表示するためにUIImageに変換したいと思います。
私はこの技術に不慣れです。私はたくさん検索しましたが、関連するものが見つかりません。私のアプリケーションでは、Web サービスからバイト配列を受け取っています。Web サービスから受け取ったバイト配列は
[137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,1,195,0,0,1,195,8,2,0 ,0,0,215,2... ]
そして、このバイト配列をUIImageViewに表示するためにUIImageに変換したいと思います。
UIImage には以下のコンストラクターを使用します。
+ (UIImage *)imageWithData:(NSData *)data;
NSData *data = [NSData dataWithBytes:YOUR_BYTE_ARRAY length:ARRAY_LENGTH];
UIImage *img = [UIImage imageWithData:data];
UIImageView *imgView = [[UIImageView alloc]initWithImage:img];
上記のバイト配列\211 P N G \r \n \032 \n
(または137,80,78,71,13,10,26,10
10 進数) の最初の 8 バイトは、これがPNG
ファイルであることを示しています。
+ (UIImage *)imageNamed:(NSString *)name
少なくとも、バイトシーケンス全体をファイルに保存し、またはを使用してロードできるはずです+ (UIImage *)imageWithContentsOfFile:(NSString *)path
。例えば:
UIImage *myImage = [UIImage imageNamed:@"myfile.png"]
// myfile.png should be in the main bundle
(Apurv の方法はより直接的であり、この理由からより優れています。しかし、あなたはそれが非常に難しいので、少し異なるアプローチを提案したいと思います。)
#import "NSDataAdditions.h"
NSData *dataObj = [NSData dataWithBase64EncodedString:StringImage];
UIImage *Image = [UIImage imageWithData:dataObj];
最初にデータを Base64 でデコードする必要があります。多くの SOAP Web サービスから返されるデータは、base 64 でエンコードされているだけでなく、Web サイトに埋め込まれている生データである場合もあります。実行するのは非常に簡単ですが、他の誰かが作成したライブラリを使用するのが最も簡単です。
これをプロジェクトに含め、このファイルに .h を含めることから始めます: https://github.com/nicklockwood/Base64
NSString *base64String = @"**YOUR BYE ARRAY HERE**";
UIImage *imageOrig = [UIImage imageWithData:[NSData dataFromBase64String:base64String]];
UIImageView *imageView = [[UIImageView alloc]initWithImage:imageOrig];
それはそれを行う必要があります。私の以前の経験では、Webサービスを介して取得したデータブロブを文字列に入れ、この方法を使用して画像を作成するだけで、うまく機能します.Base64エンコーディングとデコーディングの詳細については、ここで素晴らしい議論があります: http://cocoadev .com/wiki/BaseSixtyFourは、私がクラスを作成するために使用したものですが、gitHub の Nick のコードは、ARC に準拠しているため、はるかに優れています。
//Use this
CGColorSpaceRef colorSpace=CGColorSpaceCreateDeviceRGB();
CGContextRef bitmapContext=CGBitmapContextCreate(YOUR_BYTE_ARRAY, w, h, 8, 4*w, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrderDefault);
CFRelease(colorSpace);
free(YOUR_BYTE_ARRAY);
CGImageRef cgImage=CGBitmapContextCreateImage(bitmapContext);
CGContextRelease(bitmapContext);
UIImage *newimage = [UIImage imageWithCGImage:cgImage];
[yourImageView setImage:newimage];
CGImageRelease(cgImage);
それはあなたを助けるかもしれません...