Bitmap拉伸後出現鋸齒的幾種解決辦法

2021-09-01 19:30:20 字數 791 閱讀 3179

最近在做flow em時 遇到拉伸後出現嚴重鋸齒的情況,後來網上查了下,經過幾次嘗試算是解決了問題,現在就來總結下:

網上搜到的兩種解決方法:

1.給paint加上抗鋸齒標誌。然後將paint物件作為引數傳給canvas的繪製方法。

paint.setantialias(true);

canvas.drawbitmap(bmp ,fx,fy,paint);

2.直接給canvas加抗鋸齒。

canvas.setdrawfilter(new paintflagsdrawfilter(0, paint.anti_alias_flag|paint.filter_bitmap_flag));

這兩種方法 大多數情況下都能解決問題,但是部分情況下效果不太理想。除此之外還可以嘗試下面兩種方法:

3. 建立bitmap時就做拉伸處理:

bitmap bmp = bitmap.createscaledbitmap(bmpsrc, (int) (bmpsrc.getwidth() * scale), (int) (bmpsrc.getheight() * scale), true);

注意這個 方法的最後乙個引數一定要設為true,否則無法去鋸齒

4 .在繪製影象時利用matrix對影象進行拉伸。

matrix matrix = new matrix();

matrix.settranslate(fx,fy);

matrix.postscale(scale,scale,fx,fy);

canvas.drawbitmap(bmp,matrix,null);

處理Bitmap出現oom的異常

大小 直接使用imageview顯示bitmap會占用較多資源,特別是較大的時候,可能導致崩潰。使用bitmapfactory.options設定insamplesize,這樣做可以減少對系統資源的要求。屬性值insamplesize表示縮圖大小為原始大小的幾分之一,即如果這個值為2,則取出的縮圖的...

Centos配置使用samba時出現的幾個問題

1.在linux和windows網路通暢的情況下 即雙方能互相ping通 在windows中輸入位址後根本沒彈出輸入使用者名稱和密碼的彈窗,而彈出了網路錯誤,提示無法訪問。1 首先檢查位址是否輸入錯誤 2 檢查linux中的samba服務是否開啟,使用以下命令可檢視,執行則顯示running ser...

springboot啟動後卡住無日誌的幾種情況小結

目錄 今天分享一下springboot啟動後無日誌的問題。springboot專案啟動後卡住無日誌,肯定是報錯了或者其他原因,並且日誌沒有列印出來。檢查一下 是否 exclude了springboot自帶的日誌包,放開後可能就有具體的程式設計客棧錯誤原因了。org.springframework.b...