package com.sxt.img;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Dictionary;
import java.util.Hashtable;
import javax.imageio.ImageIO;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/**
* 手动实现改变图片的亮度 修改图片的rgb
*
* @author Danny
*
*/
public class ImageProcessDemo
extends JFrame
{
private int value = 0;
public ImageProcessDemo()
{
initComponent();
this.setVisible(true);
}
private void initComponent()
{
this.setTitle("图片处理测试");
this.
setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE);
this.setSize(500, 400);
this.setLocationRelativeTo(null);
initImg
(new File("a.jpg"));
{
@Override
protected void paintComponent
(Graphics g
)
{
super.paintComponent(g);
g2.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), null);
}
};
slider.setValue(50);
slider.setPaintLabels(true);
slider.setPaintTicks(true);
slider.setMajorTickSpacing(100);
slider.setMinorTickSpacing(5);
Dictionary
<Integer, Component
> labels
= new Hashtable
<Integer, Component
>();
for (int i = 0; i <= 100; i += 5)
{
labels.
put(i,
new JLabel("" + i
));
}
slider.setLabelTable(labels);
value = slider.getValue();
{
@Override
{
if (slider.getValueIsAdjusting())
{
int changeValue = slider.getValue() - value;
processImg(changeValue);
value = slider.getValue();
}
}
});
box.add(slider);
}
private void initImg
(File file
)
{
try
{
img = ImageIO.read(file);
{
}
}
/**
* 处理图片
*
*/
private void processImg(int changeValue)
{
for (int x = 0; x < img.getWidth(); x++)
{
for (int y = 0; y < img.getHeight(); y++)
{
// 获取到rgb的组合值
int rgb = img.getRGB(x, y);
int r = color.getRed() + changeValue;
int g = color.getGreen() + changeValue;
int b = color.getBlue() + changeValue;
if (r > 255)
{
r = 255;
} else if (r < 0)
{
r = 0;
}
if (g > 255)
{
g = 255;
} else if (g < 0)
{
g = 0;
}
if (b > 255)
{
b = 255;
} else if (b < 0)
{
b = 0;
}
color
= new Color(r, g, b
);
img.setRGB(x, y, color.getRGB());
}
}
panel.repaint();
}
public static void main
(String[] args
)
{
new ImageProcessDemo();
}
}