1

私は画像処理を行っていません。JAVA で .jpeg 画像ファイルを読み取り、色の値に基づいてキャンバスにピクセルを描画したいと考えています。つまり、最初にすべての黒のピクセルを描画し、次にすべての灰色のピクセルを描画し、最後に白のピクセルを描画します。

また、描画される各ピクセル間に非常に小さなギャップを導入して、画像がどのように描画されているかを確認したいと考えています。

どんな助けでも大歓迎です。

4

1 に答える 1

3

これは、簡単に説明した、簡単な説明の例です。このコードは、画像からRGB値を分解します。次に、データを使用して必要なことをすべて実行します。

public static BufferedImage exampleForSO(BufferedImage image) {
    BufferedImage imageIn = image;
    BufferedImage imageOut = 
    new BufferedImage(imageIn.getWidth(), imageIn.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);
    int width = imageIn.getWidth();
    int height = imageIn.getHeight();
    int[] imageInPixels = imageIn.getRGB(0, 0, width, height, null, 0, width);
    int[] imageOutPixels = new int[imageInPixels.length];
    for (int i = 0; i < imageInPixels.length; i++) {
        int alpha = (imageInPixels[i] & 0xFF000000) >> 24;
        int red = (imageInPixels[i] & 0x00FF0000) >> 16;
        int green = (imageInPixels[i] & 0x0000FF00) >> 8;
        int blue = (imageInPixels[i] & 0x000000FF) >> 0;

        // Make any change to the colors.
        if (  conditionCheckerForRedGreenAndBlue  ){
            // bla bla bla
        } else {
            // yada yada yada
        }

        // At last, store in output array:
        imageOutPixels[i] = (alpha & 0xFF) << 24
                        | (red & 0xFF) << 16
                        | (green & 0xFF) << 8
                        | (blue & 0xFF);

    }
    imageOut.setRGB(0, 0, width, height, imageOutPixels, 0, width);
    return imageOut;
}
于 2013-03-08T15:40:47.770 に答える