【Kotlin】图片处理

388 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情

课前知识

今天学习图片处理的知识,首先我们需要了解计算机表示颜色是用三元色进行描述,如下图:

在这里插入图片描述

然后计算机对颜色描述的进制用的是16进制表示,下面我列出了部分十进制和十六进制的转换:

十进制十六进制
11
22
33
44
55
66
77
88
99
10A
11B
12C
13D
14E
15F
1610

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"))

这样我们就得到了一个红色的正方形

在这里插入图片描述