gpt4 book ai didi

java - SWT 图像连接或平铺/马赛克

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:43:12 26 4
gpt4 key购买 nike

我有一个 Eclipse RCP 应用程序,它可以显示很多(10k+)个彼此相邻的小图像,就像胶片一样。对于每个图像,我都使用了一个 SWT Image 对象。这会使用过多的内存和资源。我正在寻找一种更有效的方法。我考虑过获取所有这些图像并通过创建一个具有适当总宽度、连接宽度(具有恒定高度)的 ImageData 对象并将它们连接起来,并使用 setPixel() 作为其余的像素。但是,ImageData 构造函数中使用的 Palette 我无法理解。

我还搜索了 SWT 平铺或马赛克功能以从一组图像中创建一个图像,但一无所获。

有什么想法可以有效地并排显示数千张小图像吗?请注意,一旦显示图像,就不会对其进行处理,因此这是一次性成本。

最佳答案

您可以直接在新(大)图像的 GC(图形上下文)上绘制。拥有一个大图像应该比数千个小图像导致更少的资源使用(SWT 中的每个图像都保留一些操作系统图形对象句柄)

你可以尝试的是这样的:

        final List<Image> images;
final Image bigImage = new Image(Display.getCurrent(), combinedWidth, height);
final GC gc = new GC(bigImage);
//loop thru all the images while increasing x as necessary:
int x = 0;
int y = 0;
for (Image curImage : images) {
gc.drawImage(curImage, x, y);
x += curImage.getBounds().width;
}
//very important to dispose GC!!!
gc.dispose();
//now you can use bigImage

关于java - SWT 图像连接或平铺/马赛克,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/273711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com