如何使用 MemoryImageSource 扩展图像?
How to expand an image with MemoryImageSource?
我从一个文件中得到一个 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);
我得到: and 如果我将 p.width
更改为 p.width*2
(最后一个参数)
我不知道如何保留一张 8*8 的正方形图片
编辑:
可以在这里找到一个例子:Working example,它不能在 Ideone 上 运行 因为它需要显示,但它可以工作
加载图像后调整图像大小。这样您就可以使用 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
。
我从一个文件中得到一个 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.width
更改为 p.width*2
(最后一个参数)
我不知道如何保留一张 8*8 的正方形图片
编辑:
可以在这里找到一个例子:Working example,它不能在 Ideone 上 运行 因为它需要显示,但它可以工作
加载图像后调整图像大小。这样您就可以使用 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
。