문제

나는 실제로 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 데이터를 전송하는 경우).

행운을 빕니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top