Java 是否可能将swt.graphics.image转换为awt.image?
我正在使用Java 是否可能将swt.graphics.image转换为awt.image?,java,image,swt,awt,Java,Image,Swt,Awt,我正在使用eclipse.swt.graphics.image来呈现pdf文件,但我想使用awt.image像这样label.setIcon(新图像图标(图像))在jLabel上绘制它们。可能吗?那么如何导入呢?导入java.awt.Frame; import java.awt.Frame; import java.awt.Graphics; import java.awt.Insets; import java.awt.image.BufferedImage; import java.awt.
eclipse.swt.graphics.image
来呈现pdf
文件,但我想使用awt.image
像这样label.setIcon(新图像图标(图像))在jLabel上绘制它们代码>。可能吗?那么如何导入呢?导入java.awt.Frame;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.DirectColorModel;
import java.awt.image.IndexColorModel;
import java.awt.image.WritableRaster;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.graphics.*;
public class SWTImageTools {
static BufferedImage convertToAWT(ImageData data) {
ColorModel colorModel = null;
PaletteData palette = data.palette;
if (palette.isDirect) {
colorModel = new DirectColorModel(data.depth, palette.redMask, palette.greenMask, palette.blueMask);
BufferedImage bufferedImage = new BufferedImage(colorModel, colorModel.createCompatibleWritableRaster(data.width, data.height), false, null);
for (int y = 0; y < data.height; y++) {
for (int x = 0; x < data.width; x++) {
int pixel = data.getPixel(x, y);
RGB rgb = palette.getRGB(pixel);
bufferedImage.setRGB(x, y, rgb.red << 16 | rgb.green << 8 | rgb.blue);
}
}
return bufferedImage;
} else {
RGB[] rgbs = palette.getRGBs();
byte[] red = new byte[rgbs.length];
byte[] green = new byte[rgbs.length];
byte[] blue = new byte[rgbs.length];
for (int i = 0; i < rgbs.length; i++) {
RGB rgb = rgbs[i];
red[i] = (byte)rgb.red;
green[i] = (byte)rgb.green;
blue[i] = (byte)rgb.blue;
}
if (data.transparentPixel != -1) {
colorModel = new IndexColorModel(data.depth, rgbs.length, red, green, blue, data.transparentPixel);
} else {
colorModel = new IndexColorModel(data.depth, rgbs.length, red, green, blue);
}
BufferedImage bufferedImage = new BufferedImage(colorModel, colorModel.createCompatibleWritableRaster(data.width, data.height), false, null);
WritableRaster raster = bufferedImage.getRaster();
int[] pixelArray = new int[1];
for (int y = 0; y < data.height; y++) {
for (int x = 0; x < data.width; x++) {
int pixel = data.getPixel(x, y);
pixelArray[0] = pixel;
raster.setPixel(x, y, pixelArray);
}
}
return bufferedImage;
}
}
导入java.awt.Graphics;
导入java.awt.Insets;
导入java.awt.image.buffereImage;
导入java.awt.image.ColorModel;
导入java.awt.image.DirectColorModel;
导入java.awt.image.IndexColorModel;
导入java.awt.image.WritableRaster;
导入org.eclipse.swt.*;
导入org.eclipse.swt.widgets.*;
导入org.eclipse.swt.graphics.*;
公共类SWTImageTools{
静态缓冲区图像转换为WT(图像数据){
ColorModel ColorModel=null;
PaletteData调色板=data.palete;
if(palete.isDirect){
colorModel=新的DirectColorModel(data.depth、palete.redMask、palete.greenMask、palete.blueMask);
BuffereImage BuffereImage=新的BuffereImage(colorModel,colorModel.createCompatibleWritableRaster(data.width,data.height),false,null);
对于(int y=0;y 是的,这是可能的。第三个谷歌链接。