UIImage d'octets tenue à NSString
Je suis en train de créer une UIImage à partir d'un tableau d'octets qui est en fait détenu dans un NSString.
Quelqu'un peut-il me dire comment je peux faire?
Ici est ce que je pensais faire:
NSString *sourceString = @"mYActualBytesAREinHERe=";
//get the bytes
const char *bytesArray = [sourceString cStringUsingEncoding:NSASCIIStringEncoding];
//build the NSData object
NSData *data = [NSData dataWithBytes:bytesArray length:[sourceString length]];
//create actual image
UIImage *image = [UIImage imageWithData:data];
Le problème est image est toujours 0 x 0 (zéro).
Toutes les suggestions seraient appréciées.
Merci!
OriginalL'auteur nicktmro | 2009-07-08
Vous devez vous connecter pour publier un commentaire.
Pour convertir une image en chaîne que vous avez besoin d'une méthode pour convertir
NSData
à un base64Encoded chaîne et à l'arrière (beaucoup d'exemples ici). Les plus faciles à utiliser sont les catégories surNSData
de sorte que vous pouvez faire quelque chose comme ceci:Aller dans l'autre sens vous avez besoin d'un revers de convertisseur:
base64Encoding n'est plus disponible méthode pour NSData
OriginalL'auteur Ramin
[UIImage imageWithData:data];
sera de retour nul s'il ne comprend pas les données passées. Je voudrais vérifier votre encodage, etc. Il est étrange qu'une chaîne binaire tiendrait pure données d'image sans une sorte de codage base64, etc.). Chaîne de codages binaires et les codages ne sont pas compatibles.OriginalL'auteur amattn
Je parie que vos données d'image a certains caractères null (0x00) et comme vous le savez c'est le terminateur de la chaîne, de sorte que lorsque vous demandez la chaîne C, vous avez probablement moyen-trop peu de données.
Essayer quelque chose comme
- (NSData *)dataUsingEncoding:(NSStringEncoding)de codage;
pour générer votre NSData.
Si cela ne fonctionne pas, vous devez évaluer si le paramètre les données dans une NSString (avec des caractères null) n'est pas à l'origine d'une perte de données.
Comme l'un des autres répondants, peut-être encodage base 64 vos données serait une bonne idée (si vous utilisez une chaîne de transport de l'img de données est une exigence)
Bonne chance.
OriginalL'auteur Raymond W