Je n'ai pas une compréhension approfondie du contenu du traitement d'image Java, donc je vous pardonnerai vos mots simples.
Java implémente le réglage du niveau de couleur, c'est-à-dire ajuste le composant RVB de l'image et peut également ajuster la luminosité de l'image.
Code de test
public static void main (String [] args) {// Conversion entre le fichier et la tampon de tampon de tampon de bip = file2img ("test.jpg"); // lire l'image bufferedImage bii = img_color_gradation (bi, 100,0,0); img2file (bii, "jpg", "test1.jpg"); // générer l'image}Code de réglage du niveau de couleur
// Ajuster le niveau de couleur de l'image, ajustez le composant de RGB public static bufferedImage img_color_gradation (tampondImage IMGSRC, int r, int g, int b) {try {// créer une image sans transparence BufferedImage Back = new BufferedImage (IMGSrc.GetWidth (), imgsrc.getheight (), bufferedImage.type_int_rgb); int width = imgsrc.getWidth (); int hauteur = imgsrc.getheight (); pour (int i = 0; i <hauteur; i ++) {for (int j = 0; j <width; j ++) {int pixel = imgsrc.getrgb (j, i); Couleur couleur = nouvelle couleur (pixel); int red = colore.getRed () + r; if (rouge> 255) rouge = 255; if (rouge <0) rouge = 0; int vert = color.getgreen () + g; si (vert> 255) vert = 255; if (vert <0) vert = 0; int blue = color.getBlue () + b; if (bleu> 255) bleu = 255; if (bleu <0) bleu = 0; Color = nouvelle couleur (rouge, vert, bleu); int x = color.getrgb (); back.setrgb (j, i, x); }} retour en arrière; } catch (exception e) {e.printStackTrace (); retourner null; }}Fonctions de lecture d'image et de stockage
// Lire l'image publique statique BufferedImage File2Img (String imgPath) {try {bufferedImage BufferedImage = ImageIo.Read (new File (imgPath)); Retour BufferedImage; } catch (exception e) {e.printStackTrace (); retourner null; }} // Enregistrer l'image, l'étendue est dans le format, "jpg", "png", etc. public static void img2file (bufferedImage img, string extension, string newfile) {try {imageo.write (img, extend, new file (newfile)); } catch (exception e) {e.printStackTrace (); }}partager:
Ce qui suit est une formule de calcul pour la luminosité et le contraste
(RVB représente la valeur de la composante couleur de l'image d'origine, la valeur qui n'est pas traitée par la table NRGB, Mbrightness représente la valeur de luminosité ajustée, MContrast représente la valeur de contraste ajustée et AVG représente la valeur moyenne de l'ensemble de l'image Pixel)
Luminosité: NRGB = RVB + Mbrightness
Contraste: NRGB = (RGB-AVG) * (1%%) + AVG pour cent de plage de valeur est (-1 ~ 1) 0 est la valeur d'origine. La formule de contraste est également très bonne à prouver. Développer.
NRGB = RGB-RGB *%% -AVG + AVG *%% + AVG
NRGB = RGB-RGB *%% + AVG *%
Pour toute la matrice de l'image, la luminosité doit être assurée que la somme algébrique de toute la matrice est inchangée.
Et avg = (rgb1 + rgb2 + ... rgbn) / n (1)
(nrgb1 + nrgb2 + ... nrgbn) = (rgb1 + rgb2 + ... rgbn) + n * avg *%% - (rgb1 + rgb2 + ... rgbn) * pour cent (2)
Il suffit de substituer la formule (1) dans la formule (2)
Résumer
Ce qui précède est tout le contenu de cet article sur le réglage du niveau de couleur et le code de réglage de la luminosité des exemples d'image Java, j'espère que cela sera utile à tout le monde. S'il y a des lacunes, veuillez laisser un message pour le signaler.