Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可能将swt.graphics.image转换为awt.image?_Java_Image_Swt_Awt - Fatal编程技术网

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是的,这是可能的。第三个谷歌链接。