2013-01-07 35 views
7

Tôi gặp phải sự không nhất quán giữa ảnh chụp màn hình (lập trình bằng mã bên dưới) và nội dung thực sự trên màn hình khi phóng to hình ảnh (rất xa trong trường hợp của tôi) các cạnh cứng. Tôi nhận được mã ảnh chụp màn hình sau đây từ các diễn đàn này, nhưng những gì được lưu là một (bilinear?) Rendering của hình ảnh thay vì gần nhất hàng xóm.Ảnh chụp màn hình có lập trình xuyên tạc gần hàng xóm gần nhất

UIGraphicsBeginImageContextWithOptions([[UIScreen mainScreen] bounds].size, NO, 0.0); 
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *imageView = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
UIImageWriteToSavedPhotosAlbum(imageView, nil, nil, nil); 

cách tôi làm gần nhất-người hàng xóm là với dòng sau trong viewDidLoad

automataView.layer.magnificationFilter = kCAFilterNearest; 

(automataView là một UIImageView với một tập tin GIF trong nó, và nó được thêm vào như là một subview đến một UIScrollView đó xử lý việc thu phóng)

Dưới đây là hai hình ảnh, ảnh đầu tiên là trên màn hình, thứ hai là hình ảnh được lưu bằng mã màn hình ở trên. (Xin lỗi vì sự liên kết - "như một cơ chế ngăn chặn spam, người dùng mới không được phép đăng hình ảnh")

http://www.flickr.com/photos/[email protected]/8358662379/

http://www.flickr.com/photos/[email protected]/8358662715/

Cảm ơn bạn đã giúp đỡ nào!

+0

Bạn đã tìm thấy giải pháp nào chưa? –

Trả lời

3

Trong trường hợp câu hỏi vẫn còn liên quan. Tôi có thể nghĩ rằng nội suy là một cái gì đó bạn đặt trong đối tượng vẽ chính nó trong bối cảnh, nhưng có vẻ như bối cảnh chính nó làm một số nội suy, nó có thuộc tính CGInterpolationQuality với getter và setter. Do đó, thay đổi sau đối với đoạn mã của bạn hoạt động cho tôi:

UIGraphicsBeginImageContextWithOptions([[UIApplication sharedApplication] keyWindow].bounds.size, NO, 0.0); 
CGContextRef cgr = UIGraphicsGetCurrentContext(); 
CGContextSetInterpolationQuality(cgr, kCGInterpolationNone); 
[self.view.layer renderInContext:cgr]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); 
Các vấn đề liên quan