如何在java中增加图像的亮度?

时间:2014-11-20 07:42:21

标签: java arrays image loops brightness

我尝试做的是使用for循环来增加图像的亮度。我尝试使用for循环来查找每个像素并将亮度更改一定量。我想创建一个数组并将图像保存在该数组中,然后它将在同一文件夹中打印出新图像。同样在我的代码中,我制作了一种反射方法,它采用每个像素并垂直反射图像。要运行该程序,用户必须在CMD中键入图像名称和输出文件的名称。这是我的整个代码:

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;

public class ImageProcessor {
    public static void main(String[] args){


    if(args.length < 3){
        System.out.println("Not enough arguments");
        System.exit(-1);
        }
        String function = args[0];
        if (function.equals("-reflectV"))
      {
      String inputFileName = args[1];
      String outputFileName = args[2];

       int [][] imageArr = readGrayscaleImage(inputFileName);
       int [][] reflectedArr = reflectV(imageArr);

       writeGrayscaleImage(outputFileName, reflectedArr);
      }
      else if (function.equals("-ascii")){
      String inputFileName = args[1];
      String outputFileName = args[2];

      int [][] imageArr = readGrayscaleImage(inputFileName);
      int [][] reflectedArr = reflectV(imageArr);
      try{
      PrintStream output = new PrintStream(new File("output.txt"));
      }
      catch (java.io.FileNotFoundException ex) {
      System.out.println("Error: File Not Found");
      System.exit(-1);
      }
      }

     else if (function.equals("-adjustBrightness")){
        String amount = args[1];
        int a = Integer.parseInt(amount);
        System.out.print(a)
 }

     public static int[][] reflectV(int[][] arr){
        int[][] reflected = new int[arr.length][arr[0].length];
        for(int i=0; i< arr.length; i++){ 
            for(int j=0; j<arr[i].length;j++){
                reflected[i][j] = arr[i][arr[i].length-1-j];
            }
        }

        return reflected;
    }

    public static int[][] readGrayscaleImage(String filename) {
        int [][] result = null; //create the array
        try {
            File imageFile = new File(filename);    //create the file
            BufferedImage image = ImageIO.read(imageFile);
            int height = image.getHeight();
            int width  = image.getWidth();
            result = new int[height][width];        //read each pixel value
            for (int x = 0; x < width; x++) {
                for (int y = 0; y < height; y++) {
                    int rgb = image.getRGB(x, y);
                    result[y][x] = rgb & 0xff;
                }
            }
        }
        catch (IOException ioe) {
            System.err.println("Problems reading file named " + filename);
            System.exit(-1);
        }
        return result;  //once we're done filling it, return the new array
    }


    public static void writeGrayscaleImage(String filename, int[][] array) {
        int width = array[0].length;
        int height = array.length;

        try {
            BufferedImage image = new BufferedImage(width, height,
                BufferedImage.TYPE_INT_RGB);    //create the image

            //set all its pixel values based on values in the input array
            for (int x = 0; x < width; x++) {
                for (int y = 0; y < height; y++) {
                    int rgb = array[y][x];
                    rgb |= rgb << 8;
                    rgb |= rgb << 16;
                    image.setRGB(x, y, rgb);
                }
            }

            //write the image to a file
            File imageFile = new File(filename);
            ImageIO.write(image, "jpg", imageFile);
        }
        catch (IOException ioe) {
            System.err.println("Problems writing file named " + filename);
            System.exit(-1);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我希望这段代码对您有所帮助!

import java.io.File;
import java.io.IOException;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.awt.Color;

public class Brighter
{
     public static void main(String args[])
     {
          BufferedImage img=null;
          try
          {
             img=ImageIO.read(new File("file_path")); // read image
             for(int i=0;i<img.getHeight();i++)
             {
                for(int j=0;j<img.getWidth();j++)
                {
                    int  color =  image.getRGB(j,i);
                    int  alpha = (color & 0x00ff0000) >> 24; 
                    int  red   = (color & 0x00ff0000) >> 16;
                    int  green = (color & 0x0000ff00) >> 8;
                    int  blue  =  color & 0x000000ff;
                    Color c=new Color(red, green, blue);
                    c=c.brighter();
                    red=c.getRed();
                    green=c.getGreen();
                    blue=c.getBlue();
                    color=(alpha<<24) | (red<<16) | (green<<8) & (blue);
                    img.setRGB(j,i,color);
                }
             }
             ImageIO.write(img,"jpg",new File("output.jpg"));
          }catch(IOException e){}
     }
}