1

byte[]从一个文件中得到了一个信息,我想显示相关的图像,我发现:

// p.data is a byte[]
int[] pixels = new int[p.width * p.height];
for (int i = 0; i < pixels.length; i++) {
   pixels[i] = 0xFF000000 + intValue(p.data[i]) * 0x010101;
}
MemoryImageSource source = new MemoryImageSource(p.width, p.height, pixels, 0, p.width );
Image img = Toolkit.getDefaultToolkit().createImage(source);

//intValue is just : intValue(byte b) { return b < 0 ? b + 256 : b;}

这就是如何 :在此处输入图像描述


我想有两倍大(宽度和高度),我试过:

int[] pixels = new int[p.width * p.height *4];
for (int i = 0; i < pixels.length; i++) {
   pixels[i] = 0xFF000000 + BytePixmap.intValue(p.data[i/4]) * 0x010101;
}
MemoryImageSource source = new MemoryImageSource(p.width*2,p.height*2, pixels, 0, p.width);

我得到了:在此处输入图像描述 如果 在此处输入图像描述我更改p.widthp.width*2(最后一个参数)

我不知道如何保留一张 8*8 的正方形图片


编辑 :

可以在这里找到一个示例:工作示例,它不能在 Ideone 上运行,因为它需要显示,但它可以工作

4

1 回答 1

1

加载后调整图像大小。这样您就可以使用 java2d api 中提供的所有工具。

BufferedImage scaled = new BufferedImage(p.width*2,p.height*2, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = (Graphics2D)scaled.getGraphics();
g.drawImage(img, AffineTransform.getScaleInstance(2,2), null);
g.dispose();

现在缩放的图像大小是 2 倍。您甚至可以在您使用的显示器中执行此操作。

另一种方式,如果你只想要一个缩放的实例,那么你可以使用Image#getScaledInstance.

于 2018-03-02T08:58:43.447 回答