0
jpeg画像のR_G_BチャンネルをjlabelとY-Cb-Crチャンネルで別々の画像として表示したいのですが、配列を取得しましたが、画像に変換する方法はわかりません ///画像のRGB-YCbCrコンポーネントを取得する
編集:どうもありがとう 、これは私が書いている方法で、今では、画像のちょうど左上の四半期を表示し、色チャネルが何であっても青色で、それを表示することができますか?
public void getRGB_YCC(int width,int height,String inFileName) {
R=new int[height][width];G=new int[height][width];
B=new int[height][width];Y=new int[height][width];
Cb1=new int[height][width];Cr1=new int[height][width];
final int values[] = new int[width * height];
int r, g, b, Y_ch,Cb,Cr, y, x;
final PixelGrabber grabber = new PixelGrabber(image.getSource(), 0, 0,width,height, values, 0, width);
try {
if (grabber.grabPixels() != true) {
try {
throw new AWTException("Grabber returned false: " + grabber.getStatus());
} catch (final Exception e) {};
}
} catch (final InterruptedException e) {};
int index = 0;
for (y = 0; y < height; ++y) {
for (x = 0; x < width; ++x) {
r = values[index] >> 16 & 0xff;
g = values[index] >> 8 & 0xff;
b = values[index] & 0xff;
Y_ch= (int)(0.299 * r + 0.587 * g + 0.114 * b);
Cb= 128 + (int) (-0.16874 * r - 0.33126 * g + 0.5 * b);
Cr= 128 + (int)(0.5 * r - 0.41869 * g - 0.08131 * b);
R [y][x]=r;
G [y][x]=g;
B [y][x]=b;
Y [y][x]=Y_ch;
Cb1[y][x]=Cb;
Cr1[y][x]=Cr;
index++;
}
}
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
int[] pixels = ((DataBufferInt)img.getRaster().getDataBuffer()).getData();
for( y=0;y<height;y++)
{
for( x=0;x<width;x++)
{
pixels[x + y*width] =R[y][x]<<16;
}
}
jLabel15.setIcon(new ImageIcon(img));
}
このコードを使用しましたが、例外 "java.lang.ArrayIndexOutOfBoundsException"があります 何が問題なのですか? BufferedImage img = new BufferedImage(width、height、BufferedImage.TYPE_INT_RGB); int [] pixels =((DataBufferInt)img.getRaster()。getDataBuffer())。getData();用 { (x = 0; X <幅; X ++) { 画素[X + Y *幅]はR [Y]を= [X](; Y <高Y ++ Y = 0)のための 。 } } WritableRasterラスタ=(WritableRaster)img.getData(); raster.setPixels(0,0、width、height、pixels); jLabel15.setIcon(new ImageIcon(img)); – muhannad
最初に、私は本当にあなたの質問に答えることができません(上のコードのどの行に例外がスローされますか?)、2番目: 'raster.setPixel'やその他のものは必要ありません。言った:...結果はすぐに目に見える。バッファリングされたイメージデータを直接操作します。 – Neet
編集されたコードは – muhannad