持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情
课前知识
今天学习图片处理的知识,首先我们需要了解计算机表示颜色是用三元色进行描述,如下图:
然后计算机对颜色描述的进制用的是16进制表示,下面我列出了部分十进制和十六进制的转换:
| 十进制 | 十六进制 |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
| 10 | A |
| 11 | B |
| 12 | C |
| 13 | D |
| 14 | E |
| 15 | F |
| 16 | 10 |
0是就是最浅,ff就是最深
如下图,红色#FF0000 六位两位一组分别是红绿蓝(RGB),纯红色就是R值最大,GB值最小就是#FF0000,同理绿#00FF00 ,#000000什么颜色都没有就是黑色而蓝色就是:#0000FF
BMP文件格式 又称为Bitmap(位图)或是DIB(Device-lndependent Device,设备无关位图),是Windows系统中广泛使用的图俊文件格式。由于它可以不作任何变换地保存图像像素域的数据。
了解了以上基础知识,我们来创建一个图片
import java.awt.image.BufferedImage
import javax.imageio.ImageIO
import java.io.File
fun main(args: Array<String>) {
//宽度、高度、图片的类型
//内存中创建一个宽高都为100的图片
var image = BufferedImage(100,100,BufferedImage.TYPE_INT_RGB)
//x坐标,y坐标,值
//设置颜色
image.setRGB(0,0,0xff0000)
ImageIO.write(image,"bmp",File("a.bmp"))
}
项目中多了个a.bmp的图片,它的整体颜色是黑色的,只有左上角一个点是红色的

为了让效果明显一些:
var image = BufferedImage(100,100,BufferedImage.TYPE_INT_RGB)
var w = 0 .. 99//宽度
var h = 0 .. 99//高度
image.apply{
//循环设置
for(i in w){
for(j in h){
setRGB(i,j,0xff0000)
}
}
}
ImageIO.write(image,"bmp",File("a.bmp"))
这样我们就得到了一个红色的正方形
