No tengo una comprensión profunda del contenido del procesamiento de imágenes de Java, por lo que te perdonaré por tus palabras simples.
Java implementa el ajuste del nivel de color, es decir, ajusta el componente RGB de la imagen y también puede ajustar el brillo de la imagen.
Código de prueba
public static void main (string [] args) {// conversión entre archivos y bufferedimage bufferedImage bi = file2Img ("test.jpg"); // lee la imagen bufferedimage bii = img_color_gradation (bi, 100,0,0); img2file (bii, "jpg", "test1.jpg"); // genera la imagen} la imagen}Código de ajuste de nivel de color
// Ajuste el nivel de color de la imagen, ajuste el componente de RGB public static BufferedImage img_color_gradation (BufferedImage IMGSRC, Int R, Int G, Int B) {try {// Crear una imagen sin transparencia BuffedImage Back = New BufferedImage (imgsrc.getWidth (), () imgsrc.getheight (), bufferedimage.type_int_rgb); int width = imgsrc.getWidth (); int altura = imgsrc.getheight (); for (int i = 0; i <height; i ++) {for (int j = 0; j <width; j ++) {int pixel = imgsrc.getrgb (j, i); Color color = nuevo color (píxel); int rojo = color.getred ()+r; if (rojo> 255) rojo = 255; if (rojo <0) rojo = 0; int verde = color.getgreen ()+g; if (verde> 255) verde = 255; if (verde <0) verde = 0; int blue = color.getBlue ()+b; if (azul> 255) azul = 255; if (azul <0) azul = 0; color = nuevo color (rojo, verde, azul); int x = color.getRgb (); back.setrgb (j, i, x); }} regresar; } catch (Exception e) {E.PrintStackTrace (); regresar nulo; }}Lectura de imágenes y funciones de almacenamiento
// Lea la imagen public static BufferedImage file2Img (String imgpath) {try {bufferedImage bufferedImage = imageIO.read (nuevo archivo (imgpath)); return BufferedImage; } catch (Exception e) {E.PrintStackTrace (); regresar nulo; }} // Guardar la imagen, la extensión está en el formato, "jpg", "png", etc. public static void img2file (bufferedImage img, string extension, string newfile) {try {imageIO.write (img, extensión, nuevo archivo (newfile)); } catch (Exception e) {E.PrintStackTrace (); }}compartir:
La siguiente es una fórmula de cálculo para el brillo y el contraste
(RGB representa el valor del componente de color de la imagen original, el valor que no es procesado por la tabla NRGB, MBRightness representa el valor de brillo ajustado, Mcontrast representa el valor de contraste ajustado y AVG representa el valor promedio de toda la imagen píxel)
Brillo: NRGB = RGB+MBRIGHTness
Contraste: nrgb = (rgb-avg)*(1 por ciento%)+rango de valor de porcentaje de% avg es (-1 ~ 1) 0 es el valor original. La fórmula de contraste también es muy buena de probar. Expandirlo.
nrgb = rgb-rgb*porcentual%-avg+avg*porcentaje+avg
nrgb = rgb-rgb*porcentaje%+avg*porcentual%
Para toda la matriz de imagen, el brillo debe asegurarse de que la suma algebraica de toda la matriz no cambie.
Y avg = (rgb1+rgb2+... rgbn)/n (1)
(nrgb1+nrgb2+... nrgbn) = (rgb1+rgb2+... rgbn)+n*avg*porcentaje%-(rgb1+rgb2+... rgbn)*por ciento% (2)
Simplemente sustituya la fórmula (1) en la fórmula (2)
Resumir
Lo anterior es todo el contenido de este artículo sobre el ajuste de nivel de color y el código de ajuste de brillo Ejemplos de la imagen Java, espero que sea útil para todos. Si hay alguna deficiencia, deje un mensaje para señalarlo.