2016-09-19 59 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 –