Java 中的 Image 實例轉成 BufferedImage 實例

mxd2 9年前發布 | 5K 次閱讀 Java

public static void main(String[] args) throws IOException{
    Image img = Toolkit.getDefaultToolkit().getImage("C:\google.jpg");
    BufferedImage bi_scale = toBufferedImage(img);
    ImageIO.write(bi_scale, "jpg",new File("C:\2.jpg"));
}

public static BufferedImage toBufferedImage(Image image) { if (image instanceof BufferedImage) { return (BufferedImage)image; }

// This code ensures that all the pixels in the image are loaded
 image = new ImageIcon(image).getImage();

// Determine if the image has transparent pixels; for this method's
// implementation, see e661 Determining If an Image Has Transparent Pixels
//boolean hasAlpha = hasAlpha(image);

// Create a buffered image with a format that's compatible with the screen
 BufferedImage bimage = null;
 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
try {
    // Determine the type of transparency of the new buffered image
    int transparency = Transparency.OPAQUE;
   /* if (hasAlpha) {
     transparency = Transparency.BITMASK;
     }*/

    // Create the buffered image
     GraphicsDevice gs = ge.getDefaultScreenDevice();
     GraphicsConfiguration gc = gs.getDefaultConfiguration();
     bimage = gc.createCompatibleImage(
     image.getWidth(null), image.getHeight(null), transparency);
 } catch (HeadlessException e) {
    // The system does not have a screen
 }

if (bimage == null) {
    // Create a buffered image using the default color model
    int type = BufferedImage.TYPE_INT_RGB;
    //int type = BufferedImage.TYPE_3BYTE_BGR;//by wang
    /*if (hasAlpha) {
     type = BufferedImage.TYPE_INT_ARGB;
     }*/
     bimage = new BufferedImage(image.getWidth(null), image.getHeight(null), type);
 }

// Copy image to buffered image
 Graphics g = bimage.createGraphics();

// Paint the image onto the buffered image
 g.drawImage(image, 0, 0, null);
 g.dispose();

return bimage;

}</pre>

 本文由用戶 mxd2 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!