Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 位图变大错误是图像大小的两倍_Java_Android_Opengl Es_Bitmap - Fatal编程技术网

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参数帮了我很大的忙。