2016-09-19 60 views
0

我一直在調整大型圖像的大小,以便在Android中使用UI。 看看這張圖片,這是一個ImageViewAndroid用戶界面圖像夏普邊緣


原始圖像(即弧是其進度)比你在這裏看到的更大的約10倍。在UWP(Windows平臺)中,我們使用非常大的圖像沒有問題,但在Android中,我認爲它是用於將圖像映射到UI元素中的最近鄰方法,正如您所看到的那樣,會導致尖銳的邊緣。 有什麼辦法將它切換到另一種方法?像Bicubic?它發生在我測試過的所有Android版本中(4.1,5.0,6.0)。
只要提一下,我使用Xamarin 4,我不認爲這是一個促成因素。
沒有運氣通過互聯網搜索,恐怕我是唯一有這個問題的人。
謝謝。

回答

1

如上所述,您應該更喜歡使用矢量圖像而不是像素圖像。

但是,如果您必須使用像素圖像,也許可以使用BitmapRegionDecoder來解碼圖像行並編寫自己的resample算法(如雙線性插值,它比近鄰更好)來調整圖像大小,通常以JNI側。

另一種可能的方法是在調用Bitmap.createBitmap方法時使用「filter」參數,因爲原始圖像不會導致OOM問題,只需將其設置爲true,即可減少工件。

+0

那麼,在設計時無法阻止它呢? –

+0

@AnnaSB UI設計時間?嘗試使用矢量設計工具來製作圖標,如Sketch,Illustrator等。然後,您可以隨意導出適當大小的像素圖像,包括PNG,JPG等等。 – Sherlock

1

您應該使用矢量圖像而不是位圖圖像。

位圖x方向矢量

的位圖表示由一系列的彩色像素的圖像。而矢量圖像是用幾何圖形(線條,曲線)用顏色表示的。

矢量圖像的主要功能是允許縮放而不會丟失定義。

+0

啊,謝謝你的回覆。我相信你的意思是SVG。沒錯,我使用SVG來製作一些圖標,但是我無法訪問任何內容的SVG圖像。例如,我無法將用戶上傳的個人資料圖片轉換爲SVG ...這裏的主要問題是Android爲什麼使用N.N.以及如何預防它。 –

+0

對於您可以使用相同的圖像以不同大小不同的屏幕尺寸就像我在這裏展示:http://stackoverflow.com/questions/39434285/generate-same-size-image-in-drawable-object/39434410#39434410 –