2010-02-07 161 views
3

我用Java保存灰色圖像仍然存在問題。我怎麼能這樣做? 格式不是那麼重要,但應該沒有圖像壓縮。灰度圖像

有誰知道嗎?

回答

3

這可能不是最優雅的方法,但它的工作:

import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 

import javax.imageio.ImageIO; 


public class ImageTest { 


    public static void main(String[] args) throws IOException { 

     int width = 10 // width of your image 
     int height = 10 // height of your image 

     BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 


     for (int x = 0; x < width; ++x) 
     { 
      for (int y = 0; y < height; ++y) 
      { 
       int grayscale = ... // get your greyscale value 0..255 from your array here. 
       int colorValue = grayscale | grayscale << 8 | grayscale << 16; 
       img.setRGB(x, y, colorValue); 
      } 

     } 

     ImageIO.write(img, "png", new File("output.png")); 
    } 

} 

的colorValue由R,G,和B(B上的最低字節,克一個在此之前的,和r之前的一個)。由於您的圖像灰度,你可以簡單地使用你的圖像相同的R,G和B值,所以這就是爲什麼你可以簡單地做:

int colorValue = grayscale | grayscale << 8 | grayscale << 16; 
+1

對於此類RGB操縱下面的符號是更爲常見(我認爲這很容易理解'底層'的情況):grey << 16 |灰色<< 8 |灰色 – SyntaxT3rr0r 2010-02-07 10:43:12

+0

正確,好點,這更容易理解。我調整了我的例子。 – amarillion 2010-02-07 13:26:03

+0

只是一個註釋,如果你想要Alpha通道,你應該使用TYPE_INT_ARGB,並且將aloha字節的值轉換爲<< 24。 (我認爲這可能是有用的,因爲你是節省PNG) – medopal 2010-02-07 14:52:05