Question

Je suis en train de créer un UIImage à partir d'un tableau d'octets qui est effectivement tenue dans un NSString.

Quelqu'un peut-il s'il vous plaît me dire comment je peux le faire?

Voici 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 l'image est toujours 0x0 (néant).

Toutes les suggestions seraient appréciés.

Merci!

Était-ce utile?

La solution

Pour convertir une image en chaîne que vous avez besoin d'une méthode pour convertir NSData une chaîne base64Encoded et retour (beaucoup d'exemples ici ). Ceux à utiliser sont les catégories sur NSData les plus simples que vous pouvez faire quelque chose comme ceci:

UIImage* pic = [UIImage imageNamed:@"sample.png"];
NSData* pictureData = UIImagePNGRepresentation(pic);
NSString* pictureDataString = [pictureData base64Encoding];

Pour aller dans l'autre vous avez besoin d'un convertisseur inverse:

UIImage* image = [UIImage imageWithData:[NSData 
            dataFromBase64EncodedString: pictureDataString]];

Autres conseils

[UIImage imageWithData:data]; retourne nulle si elle ne comprend pas les données qui lui sont transmises. Je vérifier l'encodage, etc. Il est étrange qu'une chaîne binaire détiendrait pures données d'image sans une sorte d'encodage (base64, etc.). encodages cordes et codages binaires ne sont pas compatibles.

Je parie que vos données d'image a des caractères nuls là-dedans (0x00) et comme vous le savez qui est la terminaison de la chaîne, de sorte que lorsque vous demandez la chaîne C, vous obtenez probablement moyen-trop peu de données.

Essayez quelque chose comme - (NSData *) dataUsingEncoding: (NSStringEncoding) encodage; pour générer votre NSData.

Si cela ne fonctionne pas, vous devez évaluer si la définition des données dans un NSString (avec caractères nuls incorporés) ne cause pas une perte de données aussi.

Comme l'un des autres répondants, peut-être de base 64 l'encodage de votre serait une bonne idée (si vous utilisez une chaîne pour transporter les données img est une exigence)

Bonne chance.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top