2015-01-03 2 views
0

내 응용 프로그램에서는 UIView의 스크린 샷을 공유 할 수 있어야합니다. 스크린 샷을 찍으려는 코드는 다음과 같습니다.스크린 샷의 품질을 향상시키는 방법 UIView

CGRect viewFrame = [view bounds]; 
UIGraphicsBeginImageContextWithOptions(viewFrame.size, YES, 0.0); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
[view.layer renderInContext:context]; 
UIImage *viewScreenshot = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

제작 된 이미지의 품질에 만족하지 않습니다. 다음은 그 예입니다. 나는 텍스트와 이미지 주변의 소음/흐려짐을 좋아하지 않는다.

UIView screenshot example http://oi57.tinypic.com/6ekf7s.jpg

는 사람이 어떻게 품질, 포 호의를 개선하는 방법을 말해 줄래? 아니면 그냥이게 맞습니까?

+1

이것은 사용자가 제공 한 코드와는 아무 관련이 없습니다. 'UIImage'는이 단계에서 품질 손실이 없을 것입니다. 손실은 PNG 대신 JPG로 저장하려고 할 때 발생합니다 ('UIImage' ->'NSData' 할 때). – elslooo

+0

동의합니다. JPEG 유물을 보게 될 가능성이 큽니다. PNG는 스크린 샷을위한 더 나은 선택입니다. – Codo

답변

0

입력하신 코드 부분이 정확합니다. 인공물이없는 완벽한 이미지를 생성합니다. 그러나 파일로 저장할 때 무손실 형식을 사용해야합니다. 이미지에서 볼 수있는 흐려짐은 손실 압축으로 인해 발생합니다.

0

다른 답변에 동의합니다. 그냥 빠른 메모. iOS7 +에서는 다음 코드를 사용할 수 있습니다. 훨씬 빠릅니다.

UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0f); 
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO]; 
UIImage * snapshotImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return snapshotImage; 
관련 문제