2012-11-27 4 views
0

이 함수는 검은 색 이미지를 반환합니다. 나는 참새 라이브러리를 사용한다. 당신이 보여IOS 6.0에서 SPRectangle로 UIImage를 저장할 때 오류를 수정하는 방법

-(UIImage *) saveRectangle:(SPRectangle*)rectangle 
{ 
    int numberOfComponents = 8; 
    int width = rectangle.width; 
    int height = rectangle.height; 

    NSInteger bufferLenght = width * height * numberOfComponents; 


    NSMutableData * buffer= [NSMutableData dataWithLength:bufferLenght]; 

    glPixelStorei(GL_PACK_ALIGNMENT, 4); // force 4 byte alignment 

    glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, [buffer mutableBytes]); 


    CGDataProviderRef ref = CGDataProviderCreateWithData(NULL, [buffer mutableBytes], bufferLenght, NULL); 
    CGImageRef iref = CGImageCreate(width, height, 8, 32, width * 4, CGColorSpaceCreateDeviceRGB(), kCGBitmapByteOrderDefault, ref, NULL, true, kCGRenderingIntentDefault); 
    uint32_t* pixels = (uint32_t *)malloc(bufferLenght); 
    CGContextRef context = CGBitmapContextCreate(pixels, width, height, 8, width*4, CGImageGetColorSpace(iref), kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Big); 
    CGContextTranslateCTM(context, 0.0, height); 
    CGContextScaleCTM(context, 1.0, -1.0); 
    CGContextDrawImage(context, CGRectMake(0.0, 0.0, width, height), iref); 
    CGImageRef outputRef = CGBitmapContextCreateImage(context); 
    free(pixels); 

    return [UIImage imageWithCGImage:outputRef]; 
} 

답변

1

코드는 (A CGRect 매우 유사하다 SPRectangle 제외) 그것은 매우 작은 참새 코드가 있습니다

이 내 코드입니다. Sparrow 장면의 직사각형 영역 캡처를 저장하려고하는 것처럼 들립니다. Sparrow는 OpenGL 구현 세부 정보에서 사용자를 추상화하려고합니다. SPRenderTexture를 사용하는 것이 더 쉽지 않을 것이라고 확신합니까? http://doc.sparrow-framework.org/core/Classes/SPRenderTexture.html

또한 SPImage가 아니라 UIImage를 반환하고 싶습니다. 희망이 도움이됩니다.

관련 문제