이미지의 회색 음영 값을 부호없는 char 배열로 가지고 있는데, 이것을 을 통해 iOS에 표시 할 수 있도록 CGImage
으로 변환하고 싶습니다. 부호없는 문자 배열의 각 값은 그레이 스케일 이미지의 픽셀 값입니다. 다음 코드를 사용하고 있지만 이미지가 표시되지 않습니다.바이트 배열을 CGImage로 덮기
-(void)viewDidLoad
{
[super viewDidLoad];
NSString *filename = [[NSBundle mainBundle] pathForResource:@"rectange4obs1pro" ofType:@"pgm"];
NSFileManager *fm = [NSFileManager defaultManager];
/////////////// read file ///////////
FILE *file = fopen([filename UTF8String], "rb");
if (file == NULL) {
NSLog(@"File Not Found");
return;
}
char name[20], secondline[10];
int w=0, h=0, colors=0;
fscanf(file, "%s", name);
fscanf(file, "%s", secondline);
fscanf(file, "%d %d %d", &w, &h, &colors);
printf("%d %d\n", w, h);
unsigned char * imagedata = (unsigned char *) malloc(sizeof(unsigned char)*w*h);
fseek(file, 1, SEEK_CUR);
int i=0;
while (!feof(file)) {
imagedata[i] = getc(file);
i++;
}
////////////////// end read file /////////////
CGColorSpaceRef colorSpace= CGColorSpaceCreateDeviceGray();
CGContextRef bitmapContext=CGBitmapContextCreate(imagedata, w, h, 8, w, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipLast);
CFRelease(colorSpace);
free(imagedata);
CGImageRef cgImage=CGBitmapContextCreateImage(bitmapContext);
CGContextRelease(bitmapContext);
UIImage * newimage = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
[imageview setImage:newimage];
}
I 단자에 날릴 메시지 :
CGBitmapContextCreate :되지 않는 파라미터 조합 : 8 비트 정수 /컴포넌트; 16 비트/픽셀; 1 성분 색 공간; kCGImageAlphaNoneSkipLast; 100 바이트/행. Jan 31 15:25:50 sumits-mbp.bsb.igloonet check_visibility_image [4210] : CGBitmapContextCreateImage : 유효하지 않은 컨텍스트 0x0. 이것은 심각한 오류입니다. 이 응용 프로그램이나이 응용 프로그램이 사용하는 라이브러리가 잘못된 컨텍스트를 사용하고 있으므로 시스템 안정성과 안정성이 전반적으로 저하됩니다 ( ). 이 알림은 예의입니다. 으로이 문제를 해결하십시오. 곧 업데이트 될 치명적인 오류가 될 것입니다.
하면 데이터가 나타내는 이미지 형식에 대한 자세한 내용이 있습니까? 오류 메시지에서 사용자가 제공 한 이미지 데이터가 BitmapContext를 만드는 데 사용하는 매개 변수에 맞지 않습니다. 예를 들어'kCGImageAlphaNoneSkipLast'는 보통 그레이 스케일 이미지의 경우'kCGImageAlphaNone'입니다. – Volker
고마워요 @ 볼커, 내가 대답을 가지고 :) –
만약 내가 답변을 코멘트를 게시 할 수도 있습니다 – Volker