如何用Java对图片进行马赛克处理?
发布网友
发布时间:2022-05-16 16:33
我来回答
共1个回答
热心网友
时间:2022-04-26 17:49
把图片压缩成32*32这个不难,java有这样的类提供了方法
BufferedImage bi = new BufferedImage(w * 2 / scale, h * 2 / scale, bm.getType());//画布大小
Graphics2D g2 = bi.createGraphics();
g2.drawImage(bm, 0, 0, w * 2 / scale, h * 2 / scale, null); //绘制缩小后的图
// 转换成JPEG图像格式
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
JPEGEncodeParam jpeg = encoder.getDefaultJPEGEncodeParam(bi);
jpeg.setQuality(1f, false);
encoder.setJPEGEncodeParam(jpeg);
encoder.encode(bi);
byte[] data = bos.toByteArray();
但是要减少颜色数的话,这个比较麻烦,这个首先需要知道图片中
颜色空间,比如16色,32色等,你需要读取图片文件中的内容,然后根据图片头的信息
读取每个像素的RGB值(如果是RGB空间),并对每一个像素进行 颜色 设置