自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

圖片變形的抗鋸齒處理方法

移動開發(fā)
想起了很久以前也遇到過類似抗鋸齒的問題,那時候要做一個類貼紙的應用,理所當然會遇到貼紙縮放和旋轉的問題。所以鋸齒的問題也是需要解決的。但是那時候是iOS4,5的時代,壓根沒有上面說的allowsEdgeAntialiasing這個東西(這個東西iOS7才公開,不過iOS6據(jù)說也可以用,但是黑科技嘛..你懂的)

[[148963]]

前言

周末在微博上看到@周楷雯Kevin說起CALayer抗鋸齒的問題

1441074320385070.png

具體做法是:


  1. layer.allowsEdgeAntialiasing = true 

想起了很久以前也遇到過類似的問題 那時候要做一個類貼紙的應用 理所當然會遇到貼紙縮放和旋轉的問題 所以鋸齒的問題也是需要解決的 但是那時候是iOS4,5的時代 壓根沒有上面說的allowsEdgeAntialiasing這個東西(這個東西iOS7才公開 不過iOS6據(jù)說也可以用 但是黑科技嘛..你懂的)

所以當時求助了***的stackoverflow 得到了一個非常簡約而不簡單的方法 就是我在微博上說的 只要把需要顯示的圖片留一個像素的透明邊 就搞定了

方法

方法比較簡單 我寫成了一個UIImage的Category方法 然后一直塵封在我的工具庫中好幾年(遇到這個問題我才想起來)


  1. - (UIImage *)antiAlias 
  2.     CGFloat border = 1.0f; 
  3.     CGRect rect = CGRectMake(border, border, self.size.width-2*border, self.size.height-2*border); 
  4.     UIImage *img = nil; 
  5.      
  6.     UIGraphicsBeginImageContext(CGSizeMake(rect.size.width,rect.size.height)); 
  7.     [self drawInRect:CGRectMake(-1, -1, self.size.width, self.size.height)]; 
  8.     img = UIGraphicsGetImageFromCurrentImageContext(); 
  9.     UIGraphicsEndImageContext(); 
  10.      
  11.     UIGraphicsBeginImageContext(self.size); 
  12.     [img drawInRect:rect]; 
  13.     UIImage* antiImage = UIGraphicsGetImageFromCurrentImageContext(); 
  14.     UIGraphicsEndImageContext(); 
  15.      
  16.     return antiImage; 

先來看看實際的效果

2.jpg

可以看到旋轉的時候若不做任何處理 確實是會有明顯的鋸齒 而使用透明邊的方法 或者設置allowsEdgeAntialiasing 都可以消除鋸齒

接下來看看這兩種方法的性能比較 測試方法是在我的iPhone 5S上接連對500個UIImageView進行旋轉 對比幀數(shù) 其結果如下

3.jpg

結果表明 allowsEdgeAntialiasing的性能還是比透明邊的方式要差一點 所以…

  • 如果你的應用要支持iOS6- 可以參考透明邊的方法 唯一的缺點是顯示出來會比原來小那么一點點(我的做法是直接cut掉1px的邊 當然你也可以直接在圖像外面加1px的透明邊)

  • 如果你的應用僅支持iOS7 推薦使用allowsEdgeAntialiasing來設置 簡單方便咯 如果性能上覺得吃力的話 可以再考慮透明邊的方法

小結

文中的demo可以在這里找到

測試的方法也許不太嚴謹(也是臨時起意寫的這篇 所以并沒有花太多時間) 如果有錯誤 請大家提出來

責任編輯:倪明 來源: 里脊串的開發(fā)隨筆
相關推薦

2012-01-11 09:39:50

Java

2018-08-06 16:31:36

NVIDIA光線抗鋸齒

2009-06-04 15:52:25

Netbeans6.5字體無法抗鋸齒Ubuntu9.04

2009-06-10 17:11:01

linux netbe反鋸齒處理

2021-08-07 07:59:20

Windows 11操作系統(tǒng)微軟

2018-10-18 14:28:33

2009-07-28 16:07:40

.NET圖片快速處理

2011-08-09 15:20:38

2011-02-21 16:11:45

C#.NET.NET framew

2011-09-19 10:12:32

UbuntuPhotivo

2023-10-27 08:34:46

PythonJava優(yōu)勢

2011-03-16 11:22:16

iconDefaultiPhone

2010-07-26 15:12:20

坐標變換

2010-03-09 19:19:40

Python圖像處理

2011-05-06 09:19:48

筆記本花屏黑屏

2018-09-21 15:15:33

NVIDIA顯卡深度學習

2011-07-25 16:41:16

Sencha Touc

2022-07-12 09:00:00

深度學習人工智能機器人

2018-09-07 14:32:17

NVIDIARTX 20DLSS

2009-08-19 15:54:33

處理C#消息
點贊
收藏

51CTO技術棧公眾號