【问题标题】:Save SWT Image to File with Transparency Mask使用透明蒙版将 SWT 图像保存到文件
【发布时间】:2013-04-25 05:33:22
【问题描述】:

这是我目前的代码

ImageLoader saver = new ImageLoader();
saver.data = new ImageData[]
    { toSave.getImageData() };
saver.save(fileName, SWT.IMAGE_PNG);

toSave 是使用在程序中透明的SWTResourceManager 加载的图像。 fileName 是一个字符串,代表我要将图像保存到的文件(以 .png 结尾)

结果是一个黑色背景的图像,而不是我想要的透明背景。如何使背景透明?我认为这与透明蒙版有关,但我可能是错的。

提前致谢!

【问题讨论】:

  • 我的回答对你有用吗?

标签: java swt


【解决方案1】:

SWTResourceManager 似乎导致了您的问题。我不建议使用它。

试试这个代码,它对我有用:

Display d = Display.getDefault();
Image image = new Image(d, "/pictures/Llama.gif");

ImageLoader saver = new ImageLoader();
saver.data = new ImageData[] { image.getImageData() };
saver.save("output.png", SWT.IMAGE_PNG);

image.dispose();

当您不再需要 Image 时,记得将其丢弃。

【讨论】:

  • 谢谢,我试过了,我读过那篇文章。 imageData.transparentPixel 不起作用,因为透明度类型是 SWT.TRANSPARENCY_MASK 而不是 SWT.TRANSPARENCY_PIXEL 我用来检索图像的代码是:Image defaultLlama = SWTResourceManager.getImage(MainWindow.class, "/pictures/Llama.gif"); 然后存储在对象的 Image 字段中,并且由我现在正在使用的函数检索。
  • SWT 不喜欢我调用new Display() 构造函数(它抛出了Invalid thread access SWT 错误。相反我使用了Display.getDefault() 然后,它不接受我给它的文件路径( /pictures/Llama.gif 在 Classpath 中,不是绝对路径),所以我使用了位于 http://stackoverflow.com/questions/14162100/convert-a-classpath-filename-to-a-real-filename 的解决方案,这样做后效果很好。谢谢!
猜你喜欢
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多