本文目錄一覽:
- 1、請問各位高手,在java中,如何實現輸入RGB值改變顏色?
- 2、給定一幅圖像,用java讀取每個像素的RGB三個顏色值
- 3、java實現提取圖片每一點的RGB
- 4、Java中如何將RGB三個顏色的值存放到數組中
請問各位高手,在java中,如何實現輸入RGB值改變顏色?
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class RGB extends JFrame implements ActionListener{
JTextField t1,t2,t3;
JLabel b1,b2,b3;
JButton jb;
JPanel jp;
public RGB(){
super(“RGB”);
jp=new JPanel();
b1=new JLabel(“R”);
b2=new JLabel(“G”);
b3=new JLabel(“B”);
t1=new JTextField(3);
t2=new JTextField(3);
t3=new JTextField(3);
jb=new JButton(“確定”);
jb.addActionListener(this);
jp.add(b1);
jp.add(t1);
jp.add(b2);
jp.add(t2);
jp.add(b3);
jp.add(t3);
jp.add(jb);
jp.setLayout(new FlowLayout());
add(jp,BorderLayout.CENTER);
setSize(200,200);
setResizable(false);
setDefaultCloseOperation(this.DISPOSE_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(e.getSource().getClass().getSimpleName().equals(“JButton”)){
int r=Integer.parseInt(t1.getText());
int g=Integer.parseInt(t2.getText());
int b=Integer.parseInt(t3.getText());
if(r=0 r=255 g=0 g=255 b=0 b=255){
Color c=new Color(r,g,b);
jp.setBackground(c);
}else{
System.out.println(“請輸入(0-255)的整數!”);
}
}
}
public static void main(String[] args) {
new RGB();
}
}
給定一幅圖像,用java讀取每個像素的RGB三個顏色值
int rgbR;
int rgbG;
int rgbB;
int minx = 0;
int miny = 0;
try {
File file = new File(“E:\\dd.png”);
BufferedImage image = ImageIO.read(file);
int width = image.getWidth();//圖片寬度
int height = image.getHeight();//圖片高度
for (int i = minx; i width; i++) {
for (int j = miny; j height; j++) {
int pixel = image.getRGB(i, j); // 下面三行代碼將一個數字轉換為RGB數字
rgbR = (pixel 0xff0000) 16;
rgbG = (pixel 0xff00) 8;
rgbB = (pixel 0xff);
System.out.println(“i=” + i + “,j=” + j + “:(” + rgbR + “,” + rgbG + “,” + rgbB + “)”);
}
}
System.out.println(“圖片寬度為:”+width+”,高度為:”+height);
} catch (IOException e) {
System.out.println(“讀取文件出錯”);
e.printStackTrace();
}
java實現提取圖片每一點的RGB
public class TestActionAction extends Action {
public void doSome(){
try {
//
//ImageIO.read(“”);
ImageIcon[] image={new ImageIcon(“G://公司項目/Images/Map/157.png”),new ImageIcon(“G://公司項目/Images/Map/158.png”),new ImageIcon(“G://公司項目/Images/Map/159.png”),new ImageIcon(“G://公司項目/Images/Map/160.png”)};
//BufferedImage相當於一個畫布,在存在於內存中
BufferedImage img=new BufferedImage((image.length)*256 ,256,BufferedImage.TYPE_INT_RGB);
//必須創建Graphics2D對象和drawImage,不然畫出來的只是image.getIconWidth*image.getIconHeight()那麼大一個全黑圖像
Graphics2D gs=(Graphics2D)img.getGraphics();
for(int i=0;iimage.length;i++){
String k=””;
gs.
}
gs.drawImage(image[0].getImage(), 0, 0, image[0].getImageObserver());
int huabuwid=img.getWidth();
int huabuhid=img.getHeight();
for(int i=0;ihuabuwid;i++){
for(int j=0;jhuabuhid;j++){
//基於坐標取出相對應的RGB
int rgb=img.getRGB(i, j);
int R = (rgb 0xff0000) 16;
int G = (rgb 0xff00) 8;
int B = (rgb 0xff);
rgb=((R*256)+G)*256+B;
//把RGB值設置進相對應的坐標
img.setRGB(i, j, rgb);
}
}
gs.drawImage(image[1].getImage(), 256, 0, image[1].getImageObserver());
for(int i=0;ihuabuwid;i++){
for(int j=0;jhuabuhid;j++){
//基於坐標取出相對應的RGB
int rgb=img.getRGB(i, j);
int R = (rgb 0xff0000) 16;
int G = (rgb 0xff00) 8;
int B = (rgb 0xff);
rgb=((R*256)+G)*256+B;
//把RGB值設置進相對應的坐標
img.setRGB(i, j, rgb);
}
}
gs.drawImage(image[2].getImage(), 512, 0, image[2].getImageObserver());
for(int i=0;ihuabuwid;i++){
for(int j=0;jhuabuhid;j++){
//基於坐標取出相對應的RGB
int rgb=img.getRGB(i, j);
int R = (rgb 0xff0000) 16;
int G = (rgb 0xff00) 8;
int B = (rgb 0xff);
rgb=((R*256)+G)*256+B;
//把RGB值設置進相對應的坐標
img.setRGB(i, j, rgb);
}
}
gs.drawImage(image[3].getImage(), 768, 0, image[3].getImageObserver());
for(int i=0;ihuabuwid;i++){
for(int j=0;jhuabuhid;j++){
//基於坐標取出相對應的RGB
int rgb=img.getRGB(i, j);
int R = (rgb 0xff0000) 16;
int G = (rgb 0xff00) 8;
int B = (rgb 0xff);
rgb=((R*256)+G)*256+B;
//把RGB值設置進相對應的坐標
img.setRGB(i, j, rgb);
}
}
//釋放Graphics2D對象
gs.dispose();
//以流的方式保存文件
FileOutputStream outfile = new FileOutputStream(“G:/1.png” );
ImageOutputStream i=ImageIO.createImageOutputStream(outfile);
ImageIO.write(img, “png”, i);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
new TestActionAction().doSome();
}
}
Java中如何將RGB三個顏色的值存放到數組中
先定義一個類:其中三個屬性,R、G、B
public class ColorVo{
private int r;
private int g;
private int b;
getter setter
}
然後創建一個 ColorVo 數組
ColorVo[] array = new ColorVo[n];
n表示數組長度。
然後
ColorVo cv = new ColorVo();
cv.setR(1);
cv.setG(2);
cv.setB(3);
array[i] = cv
i表示數組的下表
此時就已經將ColorVo 放入了數組中
原創文章,作者:ALBC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/131494.html