그레이 스케일 이미지 데이터의 바이트 배열을 사용하여 JavaFX WritableImage를 만드는 데 관련된 문제가 있습니다. PixelWriter.setargb 사용
나는 BufferedImage에 대한 작업 함수를 작성했지만 이미지는 모든 항목이 0이이 작업 방법과 동일과 나에게 이미지를 반환하지 무엇 나에게 보이는 것은 동등한 방법으로 :
private static BufferedImage getBufferedImageFromData(int height, int width, byte[] data) {
BufferedImage result = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for(int i = 0; i < width * height; ++i){
int a = 0xFF << 24;
int r = (data[i] & 0xFF) << 16;
int g = (data[i] & 0xFF) << 8;
int b = data[i] & 0xFF;
int x = i % width;
int y = (i - x)/width;
result.setRGB(x, y, a | r | g | b);
}
return result;
}
그리고 이것은 (0으로 설정 모든 픽셀로 이미지를 반환) 자바 FX에 대한 동등한 방법에 나의 시도 : 이제
private static Image getImageFromData(int height, int width, byte[] data) {
WritableImage wr = new WritableImage(width, height);
PixelWriter pw = wr.getPixelWriter();
for(int i = 0; i < width * height; ++i) {
int r = (data[i] & 0xFF) << 16;
int g = (data[i] & 0xFF) << 8;
int b = data[i] & 0xFF;
int x = i % width;
int y = (i - x)/width;
pw.setArgb(x, y, r | g | b);
}
return wr;
}
을, 내가 할 수있는 유일한 이유 지금까지 내가 0으로 채워진 이미지를 얻는 이유는 내가 올바르게 값을 형식화하지 않았다는 것입니다. 즉, BufferedImage.setRGB는 지정된 값의 형식을 지정하고 PixelWriter.argb는 형식화 된 값이 있어야합니다. 내가 시도한 방법을 비교 한 매우 시간이 강한 것으로 보인다 :
는 나는 그것이 내가 PixelWriter.setPixels를 사용하지 않는 이유에
을 작동하도록 변경해야 할 것입니다 정확히 몰라 현재의 3 배 크기의 새 배열을 설정해야만 메서드에 넘길 수 있습니다. 어쨌든 시도해 보았습니다. 실패했습니다.
덕분에 어떤 도움
고맙습니다. 이것은 그것을 설명하고 완벽하게 작동합니다. –