我正在尝试在浏览器小部件 (SWT) 中显示图像。这些图像可以在 jar 文件中找到(插件开发)。然而:这是不可能的,因为浏览器小部件需要某种 URL 或 URI 信息。
我的想法是将 SWT 图像转换为数据 URI 值,我可以将其引入每个给定 img 元素的 src 属性。我知道,从性能的角度来看,这不是一个好的解决方案,但我不介意速度劣势。
我想知道如何将 SWT 图像转换为 data-URI 值以便在 browser-widget 中使用。
到目前为止我的代码:
package editor.plugin.editors.htmlprevieweditor;
import editor.plugin.Activator;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
public class HtmlPreview extends Composite implements DisposeListener {
private final Browser content;
public HtmlPreview(final Composite parent, final int style) {
super(parent, style);
this.setLayout(new FillLayout());
content = new Browser(this, style);
final ImageData imageData = Activator.getImageDescriptor(Activator.IMAGE_ID + Activator.PREVIEW_SMALL_ID).getImageData();
content.setText("<html><body><img src=\"data:image/png;base64," + imageData + "\"/></body></html>"); // need help on changing imageData to a base64-encoded String of bytes?
this.addDisposeListener(this);
}
@Override
public void widgetDisposed(final DisposeEvent e) {
e.widget.dispose();
}
}
任何帮助是极大的赞赏 :)!
编辑 1:我已经阅读了 SWT Image to/from String,但不幸的是它似乎并不能完全满足我的需求。
编辑 2:我不知道这是否重要,但我正在尝试加载具有每像素 alpha 透明度的 PNG24 图像。