java打开图片变亮_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);

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值