Java 位图变大错误是图像大小的两倍
我收到了臭名昭著的Java 位图变大错误是图像大小的两倍,java,android,opengl-es,bitmap,Java,Android,Opengl Es,Bitmap,我收到了臭名昭著的OpenGLRenderer错误,该错误是位图太大,无法上传到纹理中。我熟悉该错误,并且知道我需要将图像保持在2048像素以下才能避免它 然而,在三星Galaxy Nexus手机上,它报告的图像大小是实际图像大小的两倍 我的图像位于drawable文件夹中,大小为2048x95。当我运行应用程序并尝试将该图像添加到显示器时,我得到了一个臭名昭著的错误: 位图太大,无法上载到纹理(4096x190,最大值=2048x2048) 给出了什么?如果您的图像位于可绘制文件夹中,则会根据
OpenGLRenderer
错误,该错误是位图太大,无法上传到纹理中。
我熟悉该错误,并且知道我需要将图像保持在2048像素以下才能避免它
然而,在三星Galaxy Nexus手机上,它报告的图像大小是实际图像大小的两倍
我的图像位于drawable
文件夹中,大小为2048x95
。当我运行应用程序并尝试将该图像添加到显示器时,我得到了一个臭名昭著的错误:
位图太大,无法上载到纹理(4096x190,最大值=2048x2048)
给出了什么?如果您的图像位于可绘制文件夹中,则会根据设备将其缩放到适当的密度。这意味着对于mdpi设备,您的图像将是适当的尺寸,但对于hdpi、xhdpi和xxhdpi,您的图像将比您想象的大得多,而对于ldpi设备,图像将更小
如果不希望图像像Galaxy Nexus上那样缩放,请将其放入可绘制的xhdpi文件夹。对于密度无关的图像(如gl纹理),使用-nodpi
可能是更好的选择。或者,如果加载的是BitmapFactory
,则可以将inScaled
参数设置为false。是的,-nodpi
如果尝试在OpenGL中使用位图,效果会更好。我不确定他是不是这样做的,因为如果你在2048px上加载任何位图,那么你会得到OpenGLRenderer
错误,因为系统使用OpenGL进行绘图。谢谢Jave,我也遇到了类似的错误,inScaled参数帮了我很大的忙。