所以我正在创建一个HSSFSheet
使用apache poi
和自己的低级代码集的背景位图。该https://www.openoffice.org/sc/excelfileformat.pdf声明了Record BITMAP, BIFF8
:
像素数据(位图的高度线数组,从底线到顶线,见下文)
...
在每一行中,所有像素都是从左到右写入的。每个像素都存储为 3 字节数组:像素颜色的红色、绿色和蓝色分量,按此顺序。通过在最后一个像素后插入零字节,每行的大小与 4 的倍数对齐。
完整声明见PDF图片:
为了实现这一点,我的方法是使用java.awt.image.BufferedImage
type BufferedImage.TYPE_3BYTE_BGR
。然后以正确的顺序(从底线到顶线)从该 BufferedImage 的栅格中获取所有字节 RGB,并在宽度(x 方向)上填充到 4 的倍数。
代码有效,但两者之间的部分
// --- this part takes much time but I have not found any better possibility
和
// ---
需要很多时间,因为需要为每个像素获取 3 个字节的 RGB 才能根据上述奇怪的格式获取它们。
有谁知道更好的方法?也许上面奇怪的格式并没有我想象的那么奇怪,而且已经有其他用法了?
相关分类