Frage

Ich versuche, eine UIImage aus einem Byte-Array zu erstellen, die tatsächlich innerhalb eines NSString gehalten wird.

Kann mir bitte jemand sagen, wie kann ich das tun?

Hier ist, was ich dachte zu tun:

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];

Das Problem ist, Bild ist immer 0x0 (Null).

würde Irgendwelche Vorschläge geschätzt.

Danke!

War es hilfreich?

Lösung

Um ein Bild zu Zeichenfolge konvertieren müssen Sie eine Methode NSData zu einer base64Encoded Zeichenfolge konvertieren und zurück (viele Beispiele hier ). Die leichtesten zu verwenden sind Kategorien auf NSData, so dass Sie etwas tun können:

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

Um den anderen Weg gehen Sie einen Reverse-Konverter müssen:

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

Andere Tipps

[UIImage imageWithData:data]; wird wieder Null, wenn es nicht versteht die Daten an sie übergeben werden. Ich würde verdoppeln Sie Ihre Codierung überprüfen, etc. Es ist seltsam, dass eine binäre Zeichenfolge ohne irgendeine Art von Codierung reine Bilddaten halten würde (base64, etc.). String-Kodierungen und binäre Codierungen sind nicht kompatibel.

Ich wette Ihre Bilddaten in dort einige Null-Zeichen hat (0x00) und, wie Sie wissen, dass der Terminator für die Zeichenfolge ist, also, wenn Sie für den C-String fragen, werden Sie wahrscheinlich Weg-Weg zu wenig Daten.

Versuchen Sie so etwas wie - (NSData *) dataUsingEncoding: (NSStringEncoding) -Kodierung; zu generieren Ihre NSData.

Wenn das nicht funktioniert, müssen Sie prüfen, ob die Daten in eine NSString-Einstellung (mit eingebetteten null Zeichen) nicht zu einem Datenverlust zu verursachen.

Wie einer der anderen Befragten, vielleicht Base64-Daten codiert, eine gute Idee wäre (wenn eine Zeichenfolge mit der img Daten zu transportieren ist eine Anforderung)

Viel Glück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top