Java의 [0,255] 회색 값 배열에서 회색조 비트 맵 만들기

콘크리트 장미

[0,255]의 값을 포함 하는 배열 int[] shadesOfGray크기 n*n가 있습니다. 이 배열에서 8 비트 회색조 비트 맵을 만들 수 있습니까?

예 : int[] shadesOfGray = {255, 255, 255, 128, 128, 128, 0, 0, 0}

그러면 비트 맵에서 해당 픽셀의 강도는 다음과 같습니다.

255 255 255
128 128 128
0    0   0 

나는 다음과 같은 것을 시도했다.

   private static void generateBMPwithDistribution(int[] shadesOfGray, int sum, String path) throws IOException {

        int dim = 100;  
        byte[] buffer = new byte[dim * dim];    

        for (int x = 0, i = 0; x < dim; x++)        
            for (int y = 0; y < dim; y++)                                              
                buffer[(x * dim) + y] = (byte) (shadesOfGray[i]); // problem  

        try {
            ImageIO.write(getGrayscale(dim, buffer), "bmp", new File(path));
        } catch (IOException e) {
            ...
        }

    }

    public static BufferedImage getGrayscale(int width, byte[] buffer) {
        int height = buffer.length / width;
        ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
        int[] nBits = { 8 };
        ColorModel cm = new ComponentColorModel(cs, nBits, false, true,
                Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
        SampleModel sm = cm.createCompatibleSampleModel(width, height);
        DataBufferByte db = new DataBufferByte(buffer, buffer.length);
        WritableRaster raster = Raster.createWritableRaster(sm, db, null);
        BufferedImage result = new BufferedImage(cm, raster, false, null);

        return result;
    }

8 비트 .bmp를 원하기 때문에 버퍼의 값을 복사 한 다음 버퍼를 파일에 씁니다. 문제는 값> = 128입니다. 바이트는 음수 값으로 간주됩니다. 이것을 극복하는 방법이 Java에 있습니까?

gpasch

절차는 다음과 같을 수 있습니다.

private static void generateBMPwithDistribution(int[] shadesOfGray, int sum, String path) throws IOException {

    int dim1 = (int)Math.sqrt(shadesOfGray.length), dim=100*dim1;
    int[] buffer = new int[dim * dim];    

    int howManyTimes=dim/dim1;
    for (int x = 0; x < dim; x++)        
        for (int y = 0; y < dim; y++) {                                             
            int valueToReplicate=shadesOfGray[(x + y*dim)/howManyTimes];
            buffer[x + y*dim] = 0xff000000|(valueToReplicate<<16)|(valueToReplicate<<8)|valueToReplicate;
        }

    BufferedImage result=new BufferedImage(dim, dim, BufferedImage.TYPE_INT_RGB);

    try {
        ImageIO.write(result, "bmp", new File(path));
    } catch (IOException e) {
        ...
    }

}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

픽셀 값의 2D 배열에서 회색조 이미지 만들기

분류에서Dev

회색조 비트 맵 색상 화에 대한 단어는 무엇입니까

분류에서Dev

Android 카메라 (미리보기)에서 회색조 비트 맵을 얻는 가장 빠른 방법

분류에서Dev

16 비트 회색조 이미지의 픽셀 값

분류에서Dev

Python의 각 서브 플롯에 대한 회색조 컬러 바 만들기

분류에서Dev

2 차원 배열의 루비 배열, 검색 / 조회?

분류에서Dev

xCode의 회색조 이미지에서 픽셀의 회색조 값을 얻는 방법

분류에서Dev

컬러 맵 크기 (회색)

분류에서Dev

R : 그룹 기반 색상, NA 값이 회색으로 표시되고 문자가 포함 된 히트 맵

분류에서Dev

R의 16 진수 코드 색상 표에서 히트 맵 만들기

분류에서Dev

Android에서 회색 값 정의

분류에서Dev

MATLAB에서 8 비트 회색조 이미지 채색

분류에서Dev

Java에서 문자열 값을 검색하기 위해 해시 맵의 해시 맵을 탐색

분류에서Dev

편집기의 배경이 흰색이지만 페인트에서 회색 인 이유는 무엇입니까?

분류에서Dev

검색 및 조회 다른 데이터 프레임의 한 데이터 프레임에서 값을 검색하고 Pandas의 조회 값을 기반으로 새 열을 채 웁니다.

분류에서Dev

배경 이미지의 불투명도 및 회색조 필터. 흑백 및 투명하게 만들기

분류에서Dev

Renderscript android를 사용하여 비트 맵에서 빨간색 채널의 평균값 가져 오기

분류에서Dev

OnTounchEvent에서 캔버스의 비트 맵을 회전, 크기 조정 및 변환하는 방법

분류에서Dev

OnTounchEvent에서 캔버스의 비트 맵을 회전, 크기 조정 및 변환하는 방법

분류에서Dev

조회 값을 기반으로 열에 새 이름 만들기

분류에서Dev

Java에서 int 배열의 값을 테스트하여 char 배열 만들기

분류에서Dev

안드로이드에서 비트 맵의 색상을 변경하기 위해 비트 맵 픽셀을 반복

분류에서Dev

Seaborn FaceGrid + 히트 맵 회색 테두리

분류에서Dev

사이트 맵을 사용하여 탐색 창에서 "기회"단추 이름 변경

분류에서Dev

Android의 longBlob 데이터에서 비트 맵 만들기

분류에서Dev

Android의 longBlob 데이터에서 비트 맵 만들기

분류에서Dev

Bootstrap에서 사용자 정의 색상을 사용하여 비례 회색 색상 얻기

분류에서Dev

df1의 열 값을 기반으로 df2의 교차 값을 조회하고 df1에서 검색된 값으로 새 열을 만듭니다 (일치하지 않는 열 이름).

분류에서Dev

활동에서 비트 맵 만들기

Related 관련 기사

  1. 1

    픽셀 값의 2D 배열에서 회색조 이미지 만들기

  2. 2

    회색조 비트 맵 색상 화에 대한 단어는 무엇입니까

  3. 3

    Android 카메라 (미리보기)에서 회색조 비트 맵을 얻는 가장 빠른 방법

  4. 4

    16 비트 회색조 이미지의 픽셀 값

  5. 5

    Python의 각 서브 플롯에 대한 회색조 컬러 바 만들기

  6. 6

    2 차원 배열의 루비 배열, 검색 / 조회?

  7. 7

    xCode의 회색조 이미지에서 픽셀의 회색조 값을 얻는 방법

  8. 8

    컬러 맵 크기 (회색)

  9. 9

    R : 그룹 기반 색상, NA 값이 회색으로 표시되고 문자가 포함 된 히트 맵

  10. 10

    R의 16 진수 코드 색상 표에서 히트 맵 만들기

  11. 11

    Android에서 회색 값 정의

  12. 12

    MATLAB에서 8 비트 회색조 이미지 채색

  13. 13

    Java에서 문자열 값을 검색하기 위해 해시 맵의 해시 맵을 탐색

  14. 14

    편집기의 배경이 흰색이지만 페인트에서 회색 인 이유는 무엇입니까?

  15. 15

    검색 및 조회 다른 데이터 프레임의 한 데이터 프레임에서 값을 검색하고 Pandas의 조회 값을 기반으로 새 열을 채 웁니다.

  16. 16

    배경 이미지의 불투명도 및 회색조 필터. 흑백 및 투명하게 만들기

  17. 17

    Renderscript android를 사용하여 비트 맵에서 빨간색 채널의 평균값 가져 오기

  18. 18

    OnTounchEvent에서 캔버스의 비트 맵을 회전, 크기 조정 및 변환하는 방법

  19. 19

    OnTounchEvent에서 캔버스의 비트 맵을 회전, 크기 조정 및 변환하는 방법

  20. 20

    조회 값을 기반으로 열에 새 이름 만들기

  21. 21

    Java에서 int 배열의 값을 테스트하여 char 배열 만들기

  22. 22

    안드로이드에서 비트 맵의 색상을 변경하기 위해 비트 맵 픽셀을 반복

  23. 23

    Seaborn FaceGrid + 히트 맵 회색 테두리

  24. 24

    사이트 맵을 사용하여 탐색 창에서 "기회"단추 이름 변경

  25. 25

    Android의 longBlob 데이터에서 비트 맵 만들기

  26. 26

    Android의 longBlob 데이터에서 비트 맵 만들기

  27. 27

    Bootstrap에서 사용자 정의 색상을 사용하여 비례 회색 색상 얻기

  28. 28

    df1의 열 값을 기반으로 df2의 교차 값을 조회하고 df1에서 검색된 값으로 새 열을 만듭니다 (일치하지 않는 열 이름).

  29. 29

    활동에서 비트 맵 만들기

뜨겁다태그

보관