package com.android.hierarchyviewer.ui.util; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.imageio.ImageIO; import java.io.IOException; import java.awt.image.BufferedImage; import java.awt.Graphics; import java.awt.GraphicsEnvironment; import java.awt.GraphicsConfiguration; public class IconLoader { public static Icon load(Class<?> klass, String path) { try { return new ImageIcon(ImageIO.read(klass.getResourceAsStream(path))); } catch (IOException e) { e.printStackTrace(); } return null; } private static GraphicsConfiguration getGraphicsConfiguration() { GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment(); return environment.getDefaultScreenDevice().getDefaultConfiguration(); } private static boolean isHeadless() { return GraphicsEnvironment.isHeadless(); } public static BufferedImage toCompatibleImage(BufferedImage image) { if (isHeadless()) { return image; } if (image.getColorModel().equals( getGraphicsConfiguration().getColorModel())) { return image; } BufferedImage compatibleImage = getGraphicsConfiguration().createCompatibleImage( image.getWidth(), image.getHeight(), image.getTransparency()); Graphics g = compatibleImage.getGraphics(); g.drawImage(image, 0, 0, null); g.dispose(); return compatibleImage; } }