| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
WilMcCray
10年前发布

java调整图片的亮度

package cn.outofmemory.snippets.desktop;    import java.awt.Component;  import java.awt.Frame;  import java.awt.Graphics;  import java.awt.Graphics2D;  import java.awt.GraphicsConfiguration;  import java.awt.GraphicsDevice;  import java.awt.GraphicsEnvironment;  import java.awt.Image;  import java.awt.Toolkit;  import java.awt.Transparency;  import java.awt.image.BufferedImage;  import java.awt.image.ImageObserver;  import java.awt.image.RescaleOp;    public class BufferedImageSaturation {        static BufferedImage image;      static boolean imageLoaded = false;        public static void main(String[] args) {            // The ImageObserver implementation to observe loading of the image          ImageObserver myImageObserver = new ImageObserver() {            public boolean imageUpdate(Image image, int flags, int x, int y, int width, int height) {              if ((flags & ALLBITS) != 0) {                imageLoaded = true;                System.out.println("Image loading finished!");                return false;              }              return true;            }          };            // The image URL - change to where your image file is located!          String imageURL = "image.png";            /*           * This call returns immediately and pixels are loaded in the background           * We use an ImageObserver to be notified when the loading of the image           * is complete           */          Image sourceImage = Toolkit.getDefaultToolkit().getImage(imageURL);          sourceImage.getWidth(myImageObserver);            // We wait until the image is fully loaded          while (!imageLoaded) {              try {                  Thread.sleep(100);              } catch (InterruptedException e) {              }          }            // Create a buffered image from the source image with a format that's compatible with the screen          GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();          GraphicsDevice graphicsDevice = graphicsEnvironment.getDefaultScreenDevice();          GraphicsConfiguration graphicsConfiguration = graphicsDevice.getDefaultConfiguration();            // If the source image has no alpha info use Transparency.OPAQUE instead          image = graphicsConfiguration.createCompatibleImage(sourceImage.getWidth(null), sourceImage.getHeight(null), Transparency.BITMASK);            // Copy image to buffered image          Graphics graphics = image.createGraphics();            // Paint the image onto the buffered image          graphics.drawImage(sourceImage, 0, 0, null);          graphics.dispose();            // Brighten the image by 20%          float scaleFactor = 1.2f;          RescaleOp op = new RescaleOp(scaleFactor, 0, null);          image = op.filter(image, null);            // Darken the image by 5%          scaleFactor = 0.5f;          op = new RescaleOp(scaleFactor, 0, null);          image = op.filter(image, null);            // Create frame with specific title          Frame frame = new Frame("Example Frame");            // Add a component with a custom paint method          frame.add(new CustomPaintComponent());            // Display the frame          int frameWidth = 300;          int frameHeight = 300;          frame.setSize(frameWidth, frameHeight);            frame.setVisible(true);        }        /*       * To draw on the screen, it is first necessary to subclass a Component and       * override its paint() method. The paint() method is automatically called       * by the windowing system whenever component's area needs to be repainted.       */      static class CustomPaintComponent extends Component {            public void paint(Graphics g) {                // Retrieve the graphics context; this object is used to paint              // shapes              Graphics2D g2d = (Graphics2D) g;                /*               * Draw an Image object The coordinate system of a graphics context               * is such that the origin is at the northwest corner and x-axis               * increases toward the right while the y-axis increases toward the               * bottom.               */              int x = 0;              int y = 0;              g2d.drawImage(image, x, y, this);            }        }    }