단색 bmp 생성

단색 BMP 생성

  • BMP 헤더는 한땀 한땀 만들어서 넣었습니다. ㅠㅠ
  • 128 * 64 사이즈의 단색 BMP 파일 생성 입니다.
  • 단색의 경우 1비트가 1픽셀을 나타 냅니다.
  • 1바이트는 8픽셀 입니다.
  • 128 * 64 = 8192 픽셀
  • 8192 => 1024바이트
  • 헤더는 무식하게 하드코딩으로 넣었습니다.
  • 색상 가지고 와서 약간의 색상이 포함 되어 있으면 1 없으면 0
val width = bitmap.width
val height = bitmap.height
var R: Int
var G: Int
var B: Int
var pixel: Int
var i = 62
var bit = 7
for (x in height-1 downTo 0) { // 위아래 반전을 제거 하기 위해서 63부터 역순,
for (y in 0 until width) {
pixel = bitmap.getPixel(y, x)
R = Color.red(pixel)
G = Color.green(pixel)
B = Color.blue(pixel)
val gray = R+G+B/3
if(gray > 128){
arrayOfByte[i] = arrayOfByte[i] or (1 shl bit).toByte()
}
if(bit ==0){ // 알아보기 쉽게, 엔디안 처리
i++
bit = 8
}
bit--
}
}
view raw monobmp.kt hosted with ❤ by GitHub

BMP 헤더

  • 128 * 64 입니다.
  • 헤더참고
    val arrayOfByte = ByteArray(1086)
    arrayOfByte[0] = 66
    arrayOfByte[1] = 77
    arrayOfByte[2] = 62 // 사이즈 0x3E
    arrayOfByte[3] = 4 // 사이즈 0x04
    arrayOfByte[4] = 0 // 사이즈 0x00
    arrayOfByte[5] = 0 // 사이즈 0x00 1086
    arrayOfByte[6] = 0
    arrayOfByte[7] = 0
    arrayOfByte[8] = 0
    arrayOfByte[9] = 0
    arrayOfByte[10] = 62 // 이미지 데이터가 있는 곳의 포인터 실제 데이터는 62번째 주소 부터
    arrayOfByte[11] = 0
    arrayOfByte[12] = 0
    arrayOfByte[13] = 0
    arrayOfByte[14] = 40
    arrayOfByte[15] = 0
    arrayOfByte[16] = 0
    arrayOfByte[17] = 0
    arrayOfByte[18] = Byte.MIN_VALUE // -128 폭
    arrayOfByte[19] = 0
    arrayOfByte[20] = 0
    arrayOfByte[21] = 0
    arrayOfByte[22] = 64 // 높이
    arrayOfByte[23] = 0 // 높이
    arrayOfByte[24] = 0 // 높이
    arrayOfByte[25] = 0 // 높이 0 0 0 64
    arrayOfByte[26] = 1
    arrayOfByte[27] = 0
    arrayOfByte[28] = 1
    arrayOfByte[29] = 0
    arrayOfByte[30] = 0
    arrayOfByte[31] = 0
    arrayOfByte[32] = 0
    arrayOfByte[33] = 0
    arrayOfByte[34] = 0
    arrayOfByte[35] = 4
    arrayOfByte[36] = 0
    arrayOfByte[37] = 0
    arrayOfByte[38] = 0
    arrayOfByte[39] = 0
    arrayOfByte[40] = 0
    arrayOfByte[41] = 0
    arrayOfByte[42] = 0
    arrayOfByte[43] = 0
    arrayOfByte[44] = 0
    arrayOfByte[45] = 0
    arrayOfByte[46] = 0
    arrayOfByte[47] = 0
    arrayOfByte[48] = 0
    arrayOfByte[49] = 0
    arrayOfByte[50] = 0
    arrayOfByte[51] = 0
    arrayOfByte[52] = 0
    arrayOfByte[53] = 0
    arrayOfByte[54] = 0
    arrayOfByte[55] = 0
    arrayOfByte[56] = 0
    arrayOfByte[57] = 0
    arrayOfByte[58] = -1
    arrayOfByte[59] = -1
    arrayOfByte[60] = -1
    arrayOfByte[61] = 0
    view raw bmpheader.kt hosted with ❤ by GitHub

PyeongHo

즐겁게 또 즐겁게