Julia 言語よく分からんw
型変換規則がよく分からない。構造体をまとめて書きだす方法も分からない。構造体に初期値を与えられるのかも分からない。ASCII 文字型も分からない。
頭部に定義部が無いと軽い感じになるのだなと思いました。xxx...end の block 構造が重いわけではないのかと。
struct Bmp_file_header
bfType::AbstractString # 'BM' B=42 M=4d
bfSize::Int32 # file size in bytes
bfReserved1::Int16
bfReserved2::Int16
bfOffBits::Int32
end
struct Bmp_info_header
biSize::Int32 # = Z'28' ! size of bmp_info_header ; 40bytes
biWidth::Int32
biHeight::Int32
biPlanes::Int16 # = 1 ! always 1
biBitCount::Int16
biCompression::Int32 # = 0 ! 0:nocompression, 1:8bitRLE, 2:4bitRLE, 3:bitfield
biSizeImage::Int32
biXPelsPerMeter::Int32 # = 3780 ! 96dpi
biYPelsPerMeter::Int32 # = 3780 ! 96dpi
biClrUsed::Int32 # = 0
biClrImportant::Int32 # = 0
end
struct Rgb
ib::UInt8
ig::UInt8
ir::UInt8
end
function wr_bmp(bmp, fn)
ny, nx = size(bmp)
Array{Rgb}(undef, ny, nx)
bmp_file_header = Bmp_file_header("BM", 14 + 40 + 0 + (3 * nx + mod(ny, 4)) * ny, 0, 0, 14 + 40)
bmp_info_header = Bmp_info_header(0x28, nx, ny, 1, 24, 0, (3 * nx + mod(ny, 4)) * ny, 3780, 3780, 0, 0)
open(fn * ".bmp", "w") do file
write(file, bmp_file_header.bfType)
write(file, bmp_file_header.bfSize)
write(file, bmp_file_header.bfReserved1)
write(file, bmp_file_header.bfReserved2)
write(file, bmp_file_header.bfOffBits)
write(file, bmp_info_header.biSize)
write(file, bmp_info_header.biWidth)
write(file, bmp_info_header.biHeight)
write(file, bmp_info_header.biPlanes)
write(file, bmp_info_header.biBitCount)
write(file, bmp_info_header.biCompression)
write(file, bmp_info_header.biSizeImage)
write(file, bmp_info_header.biXPelsPerMeter)
write(file, bmp_info_header.biYPelsPerMeter)
write(file, bmp_info_header.biClrUsed)
write(file, bmp_info_header.biClrImportant)
for iy = ny:-1:1
for ix = 1:nx
write(file, bmp[iy, ix].ib, bmp[iy, ix].ig, bmp[iy, ix].ir)
end
for ix =1:nx % 4
write(file, convert(UInt8, 0))
end
end
end
end
nx = 250; ny = 250 B = Array{Rgb}(undef, ny, nx) for ix = 1:nx for iy = 1:ny B[ix, iy] = Rgb(convert(UInt8, 0), convert(UInt8, 0), convert(UInt8, 255)) end end wr_bmp(B, "test")

- 作者: Ivo Balbaert,Adrian Salceanu
- 出版社/メーカー: Packt Publishing
- 発売日: 2019/05/20
- メディア: ペーパーバック
- この商品を含むブログを見る
