Java 如何将BuffereImage转换为纹理?

Java 如何将BuffereImage转换为纹理?,java,graphics,textures,bufferedimage,slick2d,Java,Graphics,Textures,Bufferedimage,Slick2d,我正在尝试将BuffereImage从Slick2D转换为纹理。 我尝试过BufferedImageUtil.getTexture,但要么我使用错误,要么它不工作,在32x32图像中只返回一个棕色像素 如何将BuffereImage转换为纹理?加载纹理: 纹理; texture=TextureLoader.getTexturePNG,新文件InputStreamNew Fileres/image.png 如果它不能解决您的问题,那么您绑定它的方式就有问题 您可能用错了,但由于您没有提供实现的任何

我正在尝试将BuffereImage从Slick2D转换为纹理。 我尝试过BufferedImageUtil.getTexture,但要么我使用错误,要么它不工作,在32x32图像中只返回一个棕色像素

如何将BuffereImage转换为纹理?

加载纹理:

纹理; texture=TextureLoader.getTexturePNG,新文件InputStreamNew Fileres/image.png


如果它不能解决您的问题,那么您绑定它的方式就有问题

您可能用错了,但由于您没有提供实现的任何源代码,我只能猜测

[BuffereImage.get…],java.awt.image.BuffereImage的语法为:

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
我曾经在设置自己的字体时使用过这个方法,我将一个较大的图像(上面有所有字符)的分割图像操作产生的BuffereImage转换为纹理。它对我来说很好,但我忽略了resourceName参数

这对我来说很有用:

BufferedImage image = ImageIO.read(new File(imagePath));
Texture texture = BufferedImageUtil.getTexture("", image); 
查看此方法的源代码,resourceName参数应该对该方法没有任何影响

所以,只要试着用我的例子,然后尝试在你的项目中实现这一点,如果你有任何问题,请在评论中告诉我,我可以帮助你

编辑

您的代码存在一些基本缺陷:

这就是为什么您的代码根本不工作/引发异常的原因。加载带有BuffereImage texture=ImageIO.readnew Filepath+/texture.png的纹理;在构造函数中,它不会更改块中的纹理参数,而只是创建一个本地未使用的变量。通过删除该行中的BuffereImage来修复此问题

几乎所有的东西都是静态的。这毫无意义,因为每个块都可以有自己的纹理和参数

请遵守Java命名约定。类名为大写的Melcome MyClass,变量名为小写的Melcome myVariable,方法为小写的Melcome myMethod,常量为大写的MY_常量,包为小写的mypackage


老实说,所有你真正告诉我的是如何加载图像,在我看来。我需要将BuffereImage转换为纹理,除非你告诉我保存BuffereImage并将其加载为纹理,这对我来说会很慢,我正在尝试制作一个游戏,至少在你加载纹理的地方以及使用纹理的地方发布你的代码。好的,我收到一些错误。错误:Main类:Block类:谢谢。@Zambonie我需要您调用BufferedImageUtil.getTexture的线路。。。方法在代码中,您链接的行zambonie.reality.engine.startGameengine.java:83缺失,这是方法调用,请包含它。啊,抱歉。第83行是我给你的pastebin中的第20行,我将链接整个代码:P@Zambonie,因为你转换的BuffereImage是空的。你的代码中有一些基本的缺陷,我将把它们添加到我的答案中。好的,这是固定的。但再一次,我得到了与开始时完全相同的结果,那些点。它应该是一个完整的32*32草纹理。你现在能找到什么吗?谢谢还有,对于3,这是我们的生活,我们可以做任何事,用大写字母做任何事都不会做任何坏事,比如出错。