Java 合并SWT图像
我需要在Java中合并/组合两个SWT图像 不幸的是,我对结果图像的着色有问题,并且结果图像不像原来的两幅图像那样具有透明度 我不是图像专家,但我认为结果ImageData的PaletteData会以某种方式影响复制的第二幅图像的复制像素的颜色和透明度Java 合并SWT图像,java,image,swt,Java,Image,Swt,我需要在Java中合并/组合两个SWT图像 不幸的是,我对结果图像的着色有问题,并且结果图像不像原来的两幅图像那样具有透明度 我不是图像专家,但我认为结果ImageData的PaletteData会以某种方式影响复制的第二幅图像的复制像素的颜色和透明度 ImageData targetData = new ImageData(sourceData1.width + sourceData2.width, sourceData1.height, sourceData1.depth, sourceDa
ImageData targetData = new ImageData(sourceData1.width + sourceData2.width,
sourceData1.height, sourceData1.depth, sourceData1.palette);
将SourceData1.palette更改为SourceData2.palette将影响第一幅图像复制像素的颜色
完整代码可在以下位置找到:
我试图在处理图像像素之前更改targetData的PaletteData
第二个图像,但这也不起作用
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格式)
第二幅SWT图像(尺寸8x16,gif格式)
结果SWT图像:(尺寸24x16,gif格式)
注:
- 虽然两个图像都有透明度,但结果图像没有李>
- 我尝试将targetData转换为SWT图像,而不是保存到文件中,结果是一样的
因为合并的目的是为了装饰图标。
我能够使用以下代码执行合并:
OverlayIcon resultIcon = new OverlayIcon(BaseIconDescriptor, iconDecorationDescriptor, new Point(16, 16));
swt.graphics.Image icon = resultIcon.createImage();
JFace
CompositeImageDescriptor
有用于合并图像的代码。感谢您的评论,我没有使用这个类。我发现使用OverlayIcon类更容易。我将保留这个问题,因为我的创建并没有真正解决图像合并问题(颜色和透明度),我不想给人留下我解决了上述问题的错误印象
OverlayIcon resultIcon = new OverlayIcon(BaseIconDescriptor, iconDecorationDescriptor, new Point(16, 16));
swt.graphics.Image icon = resultIcon.createImage();