java - 合并 SWT 图像

标签 java image swt

我需要在 Java 中合并/组合两个 SWT 图像。

不幸的是,我对结果图像着色有疑问,结果图像不像原始两张图像那样具有透明度。

我不是图像专家,但我认为结果 ImageData 的 PaletteData 会以某种方式影响复制的第二张图像的复制像素的着色和透明度。

ImageData targetData = new ImageData(sourceData1.width + sourceData2.width,
sourceData1.height, sourceData1.depth, sourceData1.palette);

将 SourceData1.palette 更改为 SourceData2.palette 会影响第一个图像的复制像素的着色。

可以在以下位置找到完整代码:https://bugs.eclipse.org/bugs/show_bug.cgi?id=153863

在处理 第二张图片,但这也不起作用。

merge(sourceData1, targetData, sourceData1.x, sourceData1.x, 1);
targetData.palette = sourceData2.palette;
merge(sourceData2, targetData, startX, startY, 1);

还尝试为每个像素复制 Alpha,但效果不佳:

targetData.setAlpha(startX + i, startY + j, sourceData.getAlpha(i, j));
targetData.setPixel(startX + i, startY + j, sourceData.getPixel(i, j));

这里是两个 SWT 图像的样本和结果之一:

第一张 SWT 图片(尺寸 16x16,gif 格式)

enter image description here

第二张 SWT 图片(尺寸 8x16,gif 格式)

enter image description here

结果 SWT 图片:(大小 24x16,gif 格式)

enter image description here

注意:

  • 虽然两张图片都具有透明度,但结果图片却没有。
  • 我尝试将 targetData 转换为 SWT 图像而不是保存到文件中,结果是一样的。

Image resultSWTImage = new Image(Display.getCurrent(), targetData);

最佳答案

因为合并的目的是为了图标装饰。
我能够使用此代码执行合并:

    OverlayIcon resultIcon = new OverlayIcon(BaseIconDescriptor, iconDecorationDescriptor, new Point(16, 16));   
    swt.graphics.Image icon = resultIcon.createImage();

关于java - 合并 SWT 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24286261/

相关文章:

java - 如何替换引号之间出现的任何单词

java - 从使用 keytool 创建的文件在 osx lion 上加载 keystore

Java:如何在尽可能小的表面上绘制图像?

java - 在 SWT 界面未运行时显示 MessageBox

java - 性能调优库和 Java 8 流库

java - 按索引查找 token 进行括号匹配

html - 使覆盖容器的大小与内部图像相同

javascript - 如何在执行函数之前加载一些图像

eclipse - Tycho 构建具有对 SWT 和 RAP 的可选依赖项

Java boolean 数组,只有一个元素