2010-04-16 1 views
2

좋아, 그래서 나는 아이폰에 카메라로 찍은 사진의 스크린 샷을 찍고있다. 나는있는 UIImageView에 카메라의 사진을 넣어 코드 (이 http://www.skylarcantu.com/blog/2009/10/16/saving-a-view-as-an-image/에서이다) 이런 종류의를 사용하여 스크린 샷을 잡아 ... 나는 그것이 내가 원하는대로 작동이UIGraphicsGetImageFromCurrentImageContext는 저품질/저해상도 이미지를 제공하지만 어떻게 개선 될까요?

- (void)takeScreenshot { 

    UIWindow *theScreen = [[UIApplication sharedApplication].windows objectAtIndex:0];  
    UIGraphicsBeginImageContext(theScreen.frame.size); 
    [[theScreen layer] renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();  
    UIGraphicsEndImageContext();    
    [self doSomethingWith:screenshot]; 
} 

하지만 스크린 샷의 화질이 많이 있습니다 카메라로 촬영 한 이미지보다 나 빠졌습니다. 이것을 극복 할 수있는 방법이 있습니까? 아마 이것이 카메라의 해상도가 아닌 iPhone 화면의 해상도를 캡처하는 스크린 샷을 찍기 때문일 것입니다 - 어쩌면?!

어떤 제안 사항도 좋을 것입니다 :-)

답변

1

당신 말이 맞습니다. 화면 (320 x 480)의 해상도는 카메라 (3G의 경우 1200 x 1600, 3GS의 경우 1536 x 2048)보다 훨씬 적으므로 UIImageView는 320x480이어야하며 이미지를 자동으로 다운 샘플링합니다. 이것은 복잡하게 보입니다. - 당신은 이미 높은 해상도로 UIImage로 사진을 가지고 있습니다 - 당신은 그것들을 무언가에 오버레이하려고합니까?

+0

맞습니다. 해상도를 잃지 않고 오버레이 할 수 있습니까? – user157733

+1

아니요, 더 복잡 할 것 같습니다. 원래 카메라 이미지의 크기로 UIGraphicsBeginImageContext()를 호출하고 그 안에 drawAtPoint를 실행 한 다음 동일한 내용으로 다른 것을 그려야합니다. 그런 다음 궁극적으로 UIGraphicsGetImageFromCurrentImageContext()를 호출하여 새로운 합성 이미지를 얻습니다. –

+0

잘 머리를 주셔서 감사합니다, 나는 그것에 대해 조사 할 것입니다. 이 모든 일은 내가 생각하는 것처럼 결코 쉬운 일이 아닙니다! – user157733

관련 문제