Java-将BuffereImage的像素复制到列表
我制作了一个包含像素列表的位图类。像素类具有位置和颜色。现在我正在尝试从BuffereImage获取位图 这是我尝试过的代码:Java-将BuffereImage的像素复制到列表,java,image,Java,Image,我制作了一个包含像素列表的位图类。像素类具有位置和颜色。现在我正在尝试从BuffereImage获取位图 这是我尝试过的代码: private static Bitmap fromImage(BufferedImage image) { Bitmap bitmap = new Bitmap(); for (int x = image.getMinX(); x < image.getWidth(); x++) { for (in
private static Bitmap fromImage(BufferedImage image) {
Bitmap bitmap = new Bitmap();
for (int x = image.getMinX(); x < image.getWidth(); x++) {
for (int y = image.getMinY(); y < image.getHeight(); y++) {
bitmap.setPixel(new Pixel(RGBAColor.fromColor(
new Color(image.getRGB(x, y))), new Vector2(x, y)));
}
}
return bitmap;
}
public static Bitmap fromImage(String path) {
try {
BufferedImage img = ImageIO.read(Galaxy2D.class.getResource(
"/com/mcmastery/galaxy2d/resources/" + path));
BufferedImage conImg = new BufferedImage(img.getWidth(), img.getHeight(),
BufferedImage.TYPE_INT_ARGB);
conImg.createGraphics().drawImage(img, 0, 0, null);
return Bitmap.fromImage(conImg);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private静态位图fromImage(buffereImage图像){
位图位图=新位图();
对于(int x=image.getMinX();x
它可以工作,但当它将图像绘制到屏幕上时,会使图像失真。原始图像:
使用位图方法将图像绘制到屏幕:
我也尝试过DataBufferInt,但它仍然产生相同的结果。对于其他图像,它只是将一些像素的位置更改为接近它们应该位于的位置。但是上面的十字线会使其变黑并扭曲。不确定位图的用途(我在JDK7API中找不到它)
也许你可以使用
BufferedImage
的getSubImage(…)
方法,我说我自己制作了位图类。我正在制作一个小游戏引擎,我想基本上重写所有使用的java类,所以使用引擎的游戏只使用从引擎导入的内容。我想将图像中的所有像素复制到我的bitmap类中的像素列表中,这样我就看不出为什么你不能使用getSubImage()方法来处理游戏中的完整图像。我不知道你为什么关心单个像素。所以我可以把它们复制到一个列表中。我不想使用默认的图像类。