我想從BufferedImage複製顏色到另一個bufferedImage,下面是我的代碼。 我知道我可以使用graphics.drawImage,但我需要更改某些顏色,這就是爲什麼我要逐個像素地複製顏色,而不是將圖像繪製在另一個BufferedImage上 雖然它不起作用。 「t.setRGB」行對BufferedImage「t」似乎沒有任何影響 保存圖像「t」後,我得到一個空白圖像。 我做錯了什麼?JAVA如何從一個bufferedImage複製顏色到另一個
還有一個問題。我如何修改「myColor」方法以使用「alpha」值?
import java.io.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
public class imgSt{
public static int rgb;
public static int myColor(int r, int g, int b){
rgb= (65536 * r) + (256 * g) + (b);
return rgb;
}
public static void main(String args[]){
try {
BufferedImage img = ImageIO.read(new File("8.jpg"));
BufferedImage t= new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB);
int clear=0x000000FF;
int color, alpha, r, g, b;
for(int i=0; i<img.getWidth(); ++i){
for(int j=0; j<img.getHeight(); ++j){
color = img.getRGB(i,j);
alpha = (color>>24) & 0xff;
r = (color & 0x00ff0000) >> 16;
g = (color & 0x0000ff00) >> 8;
b = color & 0x000000ff;
t.setRGB(i,j, myColor(r, g, b) );
}
} //for
ImageIO.write(t, "jpg", new File(" sT.jpg"));
} catch (IOException e){ e.printStackTrace(); }
}//main
}//class
謝謝。我很抱歉這麼晚回覆。我的網絡被關閉了。你的方法起作用了,我也在保存我應該使用的文件時犯了一個錯誤:ImageIO.write(image,「jpg」,new FileOutputStream(fileOutputName))。相反,我使用新的文件(fileOutputName)。謝謝! –