如何在java中创建具有嵌入颜色表和像素颜色索引的双层(深度= 1)位图文件?

时间:2015-03-18 14:43:29

标签: java image-processing bmp

我正在关注,http://www.javaworld.com/article/2077561/learn-java/java-tip-60--saving-bitmap-files-in-java.html通过java创建bmp文件 我用谷歌搜索创建双层(即。depth =1)图像与颜色表,像素颜色索引在java但没有多大帮助。
任何有关使用颜色表创建双层图像的帮助,java中的像素颜色索引都会非常值得注意!

2 个答案:

答案 0 :(得分:1)

你提到的文章很旧,可能已经过时了。

您应该可以使用BufferedImage(包含您选择的颜色)创建TYPE_BYTE_BINARY类型IndexColorModel,最后使用ImageIO.write(image, "BMP", file)来编写结果将图像转换为BMP文件。

如果您想了解一般的BMP格式,WikiPedia article on BMP是一个非常好的资源。

答案 1 :(得分:1)

根据Mr.Harald K的建议,以下java代码创建并将双层图像写入文件:

package imageprocessing;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.awt.Color;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

public class WriteBmpFile {

    public static void main(String[] args) {
        SimpleDateFormat timeFormat = new SimpleDateFormat("hh_mm_ss");
        String path = "D:\\Project\\Images\\";
        String onlyBmpFileName = "Img_" + timeFormat.format(new Date());
        String bmpExtension = ".bmp";
        String bmpFilePath = path + onlyBmpFileName + bmpExtension;
        int imgRows = 32;
        int imgCols = 32;
        BufferedImage buffBiLevelImg = new BufferedImage(imgRows, imgCols, BufferedImage.TYPE_BYTE_BINARY);
        for (int r = 0; r <imgRows; r++) {
            for (int c = 0; c < imgCols; c++) {
                if ((r + c) % 2 == 0) {
                    buffBiLevelImg.setRGB(r, c, Color.WHITE.getRGB());
                } else {
                    buffBiLevelImg.setRGB(r, c, Color.BLACK.getRGB());
                }
            }
        }


        try {
            ImageIO.write(buffBiLevelImg, "bmp", new File(bmpFilePath));
        } catch (IOException ioe) {
            System.out.println("Exception Occured While Creating or Writing bitmap image ! and Stack trace is :\n " + ioe);
        }
    }
}