NSString에서 개최 된 바이트의 uiimage
-
11-09-2019 - |
문제
나는 실제로 nsstring 내에서 고정 된 바이트 배열에서 uiimage를 만들려고 노력하고 있습니다.
누군가 내가 어떻게 할 수 있는지 말해 줄 수 있습니까?
여기에 내가 생각했던 일은 다음과 같습니다.
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];
문제는 영상 항상 0x0 (nil)입니다.
모든 제안은 감사 할 것입니다.
감사!
해결책
이미지를 문자열로 변환하려면 변환 할 메소드가 필요합니다. NSData
Base64encoded String 및 뒤로 (많은 예제 여기). 사용하기 가장 쉬운 것은 카테고리입니다 NSData
따라서 다음과 같은 일을 할 수 있습니다.
UIImage* pic = [UIImage imageNamed:@"sample.png"];
NSData* pictureData = UIImagePNGRepresentation(pic);
NSString* pictureDataString = [pictureData base64Encoding];
다른 방법으로 이동하려면 리버스 변환기가 필요합니다.
UIImage* image = [UIImage imageWithData:[NSData
dataFromBase64EncodedString: pictureDataString]];
다른 팁
[UIImage imageWithData:data];
데이터가 전달되는 데이터를 이해하지 못하면 NIL을 반환합니다. 인코딩 등을 두 번 확인합니다. 바이너리 스트링이 어떤 종류의 인코딩없이 순수한 이미지 데이터를 보유하는 것은 이상합니다 (Base64 등). 문자열 인코딩 및 이진 인코딩은 호환되지 않습니다.
이미지 데이터에 몇 가지 널 문자가 있고 (0x00) 알다시피, 문자열의 터미네이터라는 것을 알고 있으므로 C 문자열을 요청하면 데이터가 너무 적을 수 있습니다.
- (nsdata *) datausingencoding과 같은 것을 시도하십시오 : (nsstringencoding) 인코딩; NSData를 생성합니다.
그래도 작동하지 않으면 데이터를 NSSTRING (내장 NULL 숯으로)로 설정하면 데이터 손실이 발생하지 않는지 평가해야합니다.
다른 응답자 중 한 명과 마찬가지로 데이터 64가 데이터를 인코딩하는 것이 좋습니다 (문자열을 사용하여 IMG 데이터를 전송하는 경우).
행운을 빕니다.