2012-07-08 52 views
8

我需要一種調整UIImage大小的方法,就像使用「最近鄰居」重採樣的photoshop。我一直在尋找一些,但我發現的一切都是關於CoreGraphics的厚度來提高雙三次採樣質量。我在我的應用中使用了像素風格的設計,並且我通過像素創建了很多東西,然後用x5倍增器放大(這需要很多時間,所以我甚至接近爲Photoshop編寫腳本)。例如:UIImage調整硬邊緣

enter image description here>enter image description here

但我真的不需要重採樣的像這樣的結果:

enter image description here

也許有人會告訴我的正確途徑。

+0

作爲補充,我可以說我已經找到了批量圖像處理與photoshop「行動」的好方法。但我仍然需要一個答案,以減少存儲的資源圖像的大小。 – kokoko 2012-07-12 17:37:29

回答

16

當您繪製圖像轉化爲圖形上下文,可以設置圖形上下文的插值質量爲「無」,像這樣(在視圖中的drawRect方法如):

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

如果您需要的結果作爲UIImage(例如,將其分配給內置的UI控件),您可以使用UIGraphicsBeginImageContext(您會發現很多示例)。

另一種方法是設置圖像視圖的層的magnificationFilter屬性:

pixelatedImageView.layer.magnificationFilter = kCAFilterNearest; 

這可能是更快,更內存高效的,因爲你並不需要重新繪製圖像。

+0

這個答案看起來不錯,我需要在XCode很快接受它。謝謝。 – kokoko 2012-07-12 17:41:02