📅  最后修改于: 2023-12-03 15:08:09.409000             🧑  作者: Mango
在图像处理中,调整亮度是一种常见的操作。在Java中,可以使用一些库来实现这个功能。在本文中,将介绍如何使用Java内置的 BufferedImage 类来增加或减少图像亮度。
获取 BufferedImage 对象: 读取图像文件并创建 BufferedImage 对象。
BufferedImage image = ImageIO.read(new File("path/to/image"));
获取图像的 Raster 对象: 通过调用 BufferedImage 对象的 getRaster() 方法获取 Raster 对象。
WritableRaster raster = image.getRaster();
反转每个像素的 RGB 值: 对于每个像素,将其 RGB 值减去 255,即可将图像反转。这个过程也可以理解为减小亮度。
int[] pixel = new int[4];
for (int x = 0; x < raster.getWidth(); x++) {
for (int y = 0; y < raster.getHeight(); y++) {
pixel = raster.getPixel(x, y, pixel);
pixel[0] = 255 - pixel[0];
pixel[1] = 255 - pixel[1];
pixel[2] = 255 - pixel[2];
raster.setPixel(x, y, pixel);
}
}
增加每个像素的 RGB 值: 对于每个像素,将其 RGB 值加上某个值,即可增加亮度。
int[] pixel = new int[4];
int brightness = 50; // 增加亮度的值
for (int x = 0; x < raster.getWidth(); x++) {
for (int y = 0; y < raster.getHeight(); y++) {
pixel = raster.getPixel(x, y, pixel);
pixel[0] = Math.min(pixel[0] + brightness, 255);
pixel[1] = Math.min(pixel[1] + brightness, 255);
pixel[2] = Math.min(pixel[2] + brightness, 255);
raster.setPixel(x, y, pixel);
}
}
保存图像: 保存修改后的图像。
ImageIO.write(image, "png", new File("path/to/saved/image.png"));
import java.awt.image.BufferedImage;
import java.awt.image.WritableRaster;
import java.io.File;
import javax.imageio.ImageIO;
public class ImageBrightness {
public static void main(String[] args) throws Exception {
// 读取图像文件并创建 BufferedImage 对象
BufferedImage image = ImageIO.read(new File("path/to/image"));
// 获取 Raster 对象
WritableRaster raster = image.getRaster();
// 反转每个像素的 RGB 值
int[] pixel = new int[4];
for (int x = 0; x < raster.getWidth(); x++) {
for (int y = 0; y < raster.getHeight(); y++) {
pixel = raster.getPixel(x, y, pixel);
pixel[0] = 255 - pixel[0];
pixel[1] = 255 - pixel[1];
pixel[2] = 255 - pixel[2];
raster.setPixel(x, y, pixel);
}
}
// 增加每个像素的 RGB 值
int brightness = 50; // 增加亮度的值
for (int x = 0; x < raster.getWidth(); x++) {
for (int y = 0; y < raster.getHeight(); y++) {
pixel = raster.getPixel(x, y, pixel);
pixel[0] = Math.min(pixel[0] + brightness, 255);
pixel[1] = Math.min(pixel[1] + brightness, 255);
pixel[2] = Math.min(pixel[2] + brightness, 255);
raster.setPixel(x, y, pixel);
}
}
// 保存图像
ImageIO.write(image, "png", new File("path/to/saved/image.png"));
}
}
以上就是使用 BufferedImage 类来增加或减少图像亮度的方法。