【发布时间】:2014-12-28 18:06:34
【问题描述】:
我已经找到了很多关于如何合并 bitmpaps 的实现,现在我正在尝试做同样的事情,但没有像我以前见过的所有尝试那样使用 Android jars。
我有 16 个 128*128 像素的位图图像。
我需要将它们垂直合并...结果我是一个完全黑色的 bmp 128x128*16...所以它不起作用。
这是我到目前为止所做的:
将所有 128*128 px 的 Bmp 读入 BufferedImage 数组:
BufferedImage[] input = new BufferedImage[16];
int counter = 0;
for(File f: new File(fixBmpPathFolder).listFiles()){
System.out.println(f.getAbsolutePath() + " loaded!");
int type = BufferedImage.TYPE_BYTE_BINARY;
input[counter] = new BufferedImage(ImageIO.read( f ).getWidth(null), ImageIO.read( f ).getHeight(null), type);
counter++;
}
mergeAndSave(input);
这里是 mergeAndSave 方法:
public static void mergeAndSave(BufferedImage input[]) throws IOException {
BufferedImage bimage = new BufferedImage(128, 128*input.length, BufferedImage.TYPE_BYTE_BINARY);
Graphics g = bimage.createGraphics();
int y = 0;
for ( int i = 0; i < input.length; i++ ) { //replaced by input.length
g.drawImage( input[i],0,y,null);
y += 128;
}
g.dispose();
ImageIO.write(bimage, "BMP", new FileOutputStream(getFileResultAbsoluteName()));
}
现在我对 png 进行了类似的尝试,效果很好,现在经过一些研究我注意到它也适用于 bmps,正确设置缓冲结果图像的类型整数枚举。
我已经为单个 bmp 运行了这段代码,它可以工作,只需读取并保存在另一个地方。
根据我的需要,文件必须是二进制类型的结果。
谢谢!
编辑:对不起,我已经在单循环上留下了最后一个实验值,但我显然已经尝试了完整的图像循环。 现在我知道这段代码并不出色,但这只是一个简单的目标。 垂直合并它们意味着我有 16 个相同尺寸 (128*128) 的位图,我想得到一个结果位图,它将是起始 16 个的连接,它们彼此重叠。
【问题讨论】:
-
那么问题是什么? )
-
垂直合并它们是什么意思。