2019独角兽企业重金招聘Python工程师标准>>>
根据文件扩展名得到文件对应该类型Icon方法
package com.fleety.util;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.HeadlessException;
import java.awt.Image;
import java.awt.Transparency;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.PixelGrabber;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import sun.awt.shell.ShellFolder;
public class CommonTool {public static BufferedImage getImageByFileTyle(String filename)throws FileNotFoundException {File file = null;String extension = filename.substring(filename.lastIndexOf(".")).toLowerCase();try {file = File.createTempFile("icon", extension);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return toBufferedImage(toImage(toIcon(file)));}public static Icon toIcon(File file) throws FileNotFoundException {ShellFolder shellFolder = ShellFolder.getShellFolder(file);Icon icon = new ImageIcon(shellFolder.getIcon(true));return icon;}public static Image toImage(Icon icon) {if (icon instanceof ImageIcon) {return ((ImageIcon) icon).getImage();} else {int w = icon.getIconWidth();int h = icon.getIconHeight();GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();GraphicsDevice gd = ge.getDefaultScreenDevice();GraphicsConfiguration gc = gd.getDefaultConfiguration();BufferedImage image = gc.createCompatibleImage(w, h);Graphics2D g = image.createGraphics();icon.paintIcon(null, g, 0, 0);g.dispose();return image;}}private static boolean hasAlpha(Image image) {// If buffered image, the color model is readily availableif (image instanceof BufferedImage) {BufferedImage bimage = (BufferedImage) image;return bimage.getColorModel().hasAlpha();}// Use a pixel grabber to retrieve the image's color model;// grabbing a single pixel is usually sufficientPixelGrabber pg = new PixelGrabber(image, 0, 0, 1, 1, false);try {pg.grabPixels();} catch (InterruptedException e) {}// Get the image's color modelColorModel cm = pg.getColorModel();return cm.hasAlpha();}// This method returns a buffered image with the contents of an imagepublic static BufferedImage toBufferedImage(Image image) {if (image instanceof BufferedImage) {return (BufferedImage) image;}// This code ensures that all the pixels in the image are loadedimage = new ImageIcon(image).getImage();// Determine if the image has transparent pixels; for this method's// implementation, see Determining If an Image Has Transparent Pixelsboolean hasAlpha = hasAlpha(image);// Create a buffered image with a format that's compatible with the// screenBufferedImage bimage = null;GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();try {// Determine the type of transparency of the new buffered imageint transparency = Transparency.OPAQUE;if (hasAlpha) {transparency = Transparency.BITMASK;}// Create the buffered imageGraphicsDevice 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 modelint type = BufferedImage.TYPE_INT_RGB;if (hasAlpha) {type = BufferedImage.TYPE_INT_ARGB;}bimage = new BufferedImage(image.getWidth(null), image.getHeight(null), type);}// Copy image to buffered imageGraphics g = bimage.createGraphics();// Paint the image onto the buffered imageg.drawImage(image, 0, 0, null);g.dispose();return bimage;}
}