2012-07-08 43 views
8

Tôi cần một phương pháp để định lại kích cỡ UIImage như trong photoshop với việc "lấy lại hàng xóm gần nhất". Tôi đã tìm kiếm một số, nhưng tất cả mọi thứ tôi tìm thấy là về CoreGraphics thicks để cải thiện chất lượng resampling bicubic. Tôi có thiết kế kiểu pixel trong ứng dụng của mình và rất nhiều thứ tôi tạo bằng pixel và sau đó phóng to nó với hệ số x5 (và phải mất rất nhiều thời gian, vì vậy tôi thậm chí còn gần viết kịch bản cho Photoshop). Ví dụ:Thay đổi kích cỡ UIImage bằng các cạnh cứng

enter image description here>enter image description here

Nhưng tôi thực sự không cần như kết quả này của resampling:

enter image description here

Có lẽ bất cứ ai cũng chỉ cho tôi một cách đúng đắn.

+0

Ngoài ra tôi có thể nói rằng tôi đã tìm thấy một cách tốt để xử lý ảnh hàng loạt với photoshop "hành động". Nhưng tôi vẫn cần một câu trả lời để giảm kích thước của hình ảnh tài nguyên được lưu trữ. – kokoko

Trả lời

16

Khi bạn vẽ hình ảnh của bạn vào một bối cảnh đồ họa, bạn có thể thiết lập chất lượng suy bối cảnh đồ họa để "none", như thế này (ví dụ như trong phương pháp của một cái nhìn drawRect):

CGContextRef c = UIGraphicsGetCurrentContext(); 
CGContextSetInterpolationQuality(c, kCGInterpolationNone); 
UIImage *image = [UIImage imageNamed:@"pixels.png"]; 
[image drawInRect:self.bounds]; 

Nếu bạn cần kết quả như là một UIImage (ví dụ như để gán nó cho một điều khiển UI tích hợp), bạn có thể làm điều này với UIGraphicsBeginImageContext (bạn sẽ tìm thấy rất nhiều ví dụ cho điều đó).

Một thay thế sẽ được thiết lập magnificationFilter tài sản của lớp một cái nhìn hình ảnh của:

pixelatedImageView.layer.magnificationFilter = kCAFilterNearest; 

Đây có lẽ là nhanh hơn và bộ nhớ hiệu quả, bởi vì bạn không cần phải vẽ lại hình ảnh.

+0

Câu trả lời này có vẻ tốt, tôi cần phải kiểm tra nó trong XCode sớm để chấp nhận. Cảm ơn. – kokoko

Các vấn đề liên quan