0
public class Loader {
public static byte[] loadImage(String path) {
Image image;
try {
image = new Image(new FileInputStream(path));
int width = (int) image.getWidth();
int height = (int) image.getHeight();
byte[] data = new byte[width * height * 4];
image.getPixelReader().getPixels(0, 0, width, height, PixelFormat.getByteBgraPreInstance(), data, 0, width * 4);
return data;
}catch(IOException e) {
e.printStackTrace();
System.exit(-1);
}
return null;
}
}
@Override
public void render(GraphicsContext gc) {
gc.clearRect(0, 0, width, height);
gc.getPixelWriter().setPixels(x++, 0, 819 ,720, PixelFormat.getByteBgraPreInstance(), data, 0, 819*4);
gc.getPixelWriter().setPixels(400, 0,819 ,720, PixelFormat.getByteBgraPreInstance(), data, 0, 819*4);
}
您好,目前我有一個來自JavaFx的PixelWriter/PixelReader的問題。我嘗試從圖像中讀取像素並將其存儲在緩衝區中,之後我想將其渲染到屏幕上。但圖像現在不包含Alpha值,因此也沒有透明像素。我在互聯網上搜索了幾個小時,但我找不到答案。也許格式有問題。 在此先感謝。JavaFX PixelReader Alpha通道不能正常工作
格式可能有問題。在Image類支持的4種格式中,只有兩種格式具有定義透明度的機制 - GIF可能具有透明顏色(因此alpha = 1或alpha = 0),PNG可能包含完整的alpha通道。如果您正在閱讀BMP或JPG文件,則不會有字母值。即使在讀取PNG文件時,如果原始文件沒有Alpha通道,也不會在不同像素的Alpha中看到任何變化。 – Itai
已經檢查過PNG文件,它有一個Alpha通道。忘了說,我知道只有閱讀Alpha Channel的圖像。但無論如何感謝。 –