如何使用 Raster 读取 WritableImage 的每个像素?
How can I read every pixel of a WritableImage with Raster?
我必须编写一个方法:
- 创建直方图
- 从灰度图像中读取所有像素值(可变宽度和高度)
- 填充直方图
我该怎么做?我写了一些代码,但我陷入了僵局。
public histogram(BufferedImage image){
WritableRaster writableRaster = image.getRaster();
int width = image.getWidth();
int height = image.getHeight();
int pixelValue;
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
pixelValue = writableRaster.setDataElements(x, y, width, height, );
}
}
}
以下代码片段应该有所帮助:
Raster raster = image.getRaster();
int numBands = raster.getSampleModel().getNumBands();
int width = image.getWidth();
int height = image.getHeight();
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
int[] pixelValue = new int[numBands];
raster.getPixel(x, y, pixelValue);
}
}
如果您真的有一张没有 alpha 的灰度图像,SampleModel 将只包含一个波段。在这种情况下,pixelValue 数组将包含您想要的 int 值。您只需添加一个包含 256 个 int 值的直方图数组,并增加像素值索引处的值。
我必须编写一个方法:
- 创建直方图
- 从灰度图像中读取所有像素值(可变宽度和高度)
- 填充直方图
我该怎么做?我写了一些代码,但我陷入了僵局。
public histogram(BufferedImage image){
WritableRaster writableRaster = image.getRaster();
int width = image.getWidth();
int height = image.getHeight();
int pixelValue;
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
pixelValue = writableRaster.setDataElements(x, y, width, height, );
}
}
}
以下代码片段应该有所帮助:
Raster raster = image.getRaster();
int numBands = raster.getSampleModel().getNumBands();
int width = image.getWidth();
int height = image.getHeight();
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
int[] pixelValue = new int[numBands];
raster.getPixel(x, y, pixelValue);
}
}
如果您真的有一张没有 alpha 的灰度图像,SampleModel 将只包含一个波段。在这种情况下,pixelValue 数组将包含您想要的 int 值。您只需添加一个包含 256 个 int 值的直方图数组,并增加像素值索引处的值。