2012-05-22 6 views
4

나는 다음과 같은 코드를 사용하여 스크린 샷을 복용하고있다 : 그러나 나는이 카메라 롤에서 이미지를 초래하는 사용자의 보고서를 가지고,스크린 샷

// Returns 1024x768 for iPad Retina 
    CGSize screenDimensions = [[UIScreen mainScreen] bounds].size; 

    // Create a graphics context with the target size 
    // (last parameter takes scale into account) 
    UIGraphicsBeginImageContextWithOptions(screenDimensions, NO, 0); 

    // Render the view to a new context 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [myView.layer renderInContext:context]; 

    // Save to Camera Roll 
    UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext(); 
    UIImageWriteToSavedPhotosAlbum(screenshot, self, nil, nil); 

    UIGraphicsEndImageContext(); 

이 작동을 그것은 iPad 망막 해상도가 아닙니다. 아이 패드가 아닌 망막 해상도와 비슷해 보입니다. (나는 이것을 시험해 볼 iPad 3가 없다).

내가 잘못하고있는 것이 있습니까?

답변

2

결국 필자는 실제 iPad Retina를 보유하고 있으며, 원래 게시 한 코드는 정상적으로 작동합니다. 결과 이미지는 완전한 망막 해상도로 보입니다.

0

여기는 내가 사용하고있는 코드이며 iPad 3에 문제가없는 것 같습니다. iOS 시뮬레이터에서 망막 iPad를 사용하여 확인할 수도 있습니다. 내 코드는 파일을 문서 디렉토리에 저장합니다. 적합하다고 생각되는 방식으로 수정할 수 있습니다.

CGSize screenSize = [[UIScreen mainScreen] applicationFrame].size; 
    CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); 
    CGContextRef ctx = CGBitmapContextCreate(nil, screenSize.width, screenSize.height, 8, 4*(int)screenSize.width, colorSpaceRef, kCGImageAlphaPremultipliedLast); 
    CGContextTranslateCTM(ctx, 0.0, screenSize.height); 
    CGContextScaleCTM(ctx, 1.0, -1.0); 

    [(CALayer*)self.view.layer renderInContext:ctx]; 

    CGImageRef cgImage = CGBitmapContextCreateImage(ctx); 
    UIImage *image = [UIImage imageWithCGImage:cgImage]; 
    CGImageRelease(cgImage); 
    CGContextRelease(ctx); 
    CGColorSpaceRelease(colorSpaceRef); 
    NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *filePath = [NSString stringWithFormat:@"%@/myscreenshot.jpg", docDir]; 

    [UIImageJPEGRepresentation(image, 1.0) writeToFile:filePath atomically:YES];