Java,SWT,调整大小时图像透明度丢失

约翰·史密斯

我会显示具有透明度的.png图像,默认情况下效果很好...直到我调整图像大小为止:

public Image resize(Image image, int width, int height)
{
    Image scaled = new Image(Display.getDefault(), width, height);
    scaled.getImageData().transparentPixel = image.getImageData().transparentPixel;
    GC gc = new GC(scaled);
    gc.setAntialias(SWT.ON);
    gc.setInterpolation(SWT.HIGH);
    gc.drawImage(image, 0, 0,image.getBounds().width, image.getBounds().height, 0, 0, width, height);
    gc.dispose();
    return scaled;
}

然后透明度消失了,我可以看到“白色”颜色

greg-449

getImageData() 为您提供了图像数据的副本,因此在其上设置透明像素不会更改原始图像。

相反,您需要使用透明像素集从缩放后的图像数据中创建另一个图像。所以像这样:

Image scaled = new Image(Display.getDefault(), width, height);
GC gc = new GC(scaled);
gc.setAntialias(SWT.ON);
gc.setInterpolation(SWT.HIGH);
gc.drawImage(image, 0, 0,image.getBounds().width, image.getBounds().height, 0, 0, width, height);
gc.dispose();

// Image data from scaled image and transparent pixel from original

ImageData imageData = scaled.getImageData();

imageData.transparentPixel = image.getImageData().transparentPixel;

// Final scaled transparent image

Image finalImage = new Image(Display.getDefault(), imageData);

scaled.dispose();

请注意,这仅在原始图像数据具有与缩放图像数据(尤其是调色板数据)相同的格式时才有效

如果数据采用其他格式,请使用:

ImageData origData = image.getImageData();

imageData.transparentPixel = imageData.palette.getPixel(origData.palette.getRGB(origData.transparentPixel));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用ImageResizer调整大小时,System.Drawing.Image中的透明度丢失

来自分类Dev

无法调整图像大小并保持透明度

来自分类Dev

无法调整图像大小并保持透明度

来自分类Dev

移除图像调整大小透明度后-GDI +

来自分类Dev

Mac OS X 10.10上的预览工具可在调整大小时增加透明度

来自分类Dev

使用CodeIgniter图像库调整图像画布的大小-如何保持透明度

来自分类Dev

SWT <-> AWT图像转换之间的透明度

来自分类Dev

PNG批量调整大小并保存,同时保持透明度

来自分类Dev

如何调整动画GIF的大小并保持透明度?

来自分类Dev

删除图像透明度

来自分类Dev

Tkinter图像透明度

来自分类Dev

Aframe 图像透明度

来自分类Dev

Java 游戏:更改图像的亮度或透明度

来自分类Dev

调整文字背景透明度

来自分类Dev

如何调整边框的透明度?

来自分类Dev

调整文字背景透明度

来自分类Dev

为什么我在使用TPicture时会丢失PNG图像的透明度?

来自分类Dev

在不损失质量和透明度的情况下调整PNG的大小

来自分类常见问题

是否可以在xaringan幻灯片中调整背景图像的不透明度?

来自分类Dev

是否可以在xaringan幻灯片中调整背景图像的不透明度?

来自分类Dev

表中图像背景的透明度

来自分类Dev

如何为图像添加透明度

来自分类Dev

pygame图像透明度混乱

来自分类Dev

为图像添加黑色透明度

来自分类Dev

LWJGL:如何设置图像的透明度?

来自分类Dev

pygame图像透明度不显示

来自分类Dev

iText7 图像透明度

来自分类Dev

调整大小时使图像居中

来自分类Dev

调整大小时图像模糊