我正在尝试从Slick2D将BufferedImage
转换为Texture
。
我已经尝试了BufferedImageUtil.getTexture()
,但要么我使用它错了,要么它不起作用(只返回32x32图像中的一个棕色像素)
如何将BufferedImage
转换为Texture
?
答案 0 :(得分:0)
你可能使用它错了,但由于你没有提供你的实现的任何源代码,我只能猜测。
[BufferedImage.get(...)](http://slick.ninjacave.com/javadoc-util/org/newdawn/slick/util/BufferedImageUtil.html#getTexture(java.lang.String,java.awt.image.BufferedImage))的语法是:
public static Texture getTexture(java.lang.String resourceName,
java.awt.image.BufferedImage resourceImage)
throws java.io.IOException
Parameters:
resourceName - The location of the resource to load
resourceImage - The BufferedImage we are converting
Returns:
The loaded texture
我在设置自己的字体时使用了一次,并将BufferedImages(由更大图像的splitImage操作产生的所有字符)转换为Textures。它对我来说很好,我忽略了resourceName
参数。
所以这对我有用:
BufferedImage image = ImageIO.read(new File(imagePath));
Texture texture = BufferedImageUtil.getTexture("", image);
查看此方法的源代码,resourceName参数根本不会对该方法产生任何影响。
所以,只需尝试使用我的示例,然后尝试在您的项目中实现它,如果您有任何问题,请在评论中告诉我,我可以帮助您。
查看强>
修改强>
您的代码存在一些根本性缺陷:
(这就是为什么你的代码根本无法工作/抛出异常)。您在构造函数中使用BufferedImage texture = ImageIO.read(new File(path+ "/texture.png"));
加载纹理,这不会更改块中的纹理参数,而只是创建一个本地未使用的变量。通过删除该行中的BufferedImage
来解决此问题。
(差不多)一切都是静态的。这没有任何意义,因为例如每个块都可以有自己的纹理和参数。
请遵守Java命名约定。类名是上驼峰案例(MyClass
),变量名称较低的驼峰案例(myVariable
),方法是较低的驼峰案例(myMethod
),常量是大写(MY_CONSTANT
)和包是小写的(mypackage
)。
答案 1 :(得分:-1)
加载纹理:
纹理纹理; texture = TextureLoader.getTexture(" PNG&#34 ;,新FileInputStream(新文件(" res / image.png")));
如果它没有解决您的问题,那么绑定它的方式就会出错。