根据文件扩展名得到文件对应该类型Icon方法
生活随笔
收集整理的這篇文章主要介紹了
根据文件扩展名得到文件对应该类型Icon方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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;} }?
轉載于:https://my.oschina.net/u/1458864/blog/268446
總結
以上是生活随笔為你收集整理的根据文件扩展名得到文件对应该类型Icon方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【树莓派学习笔记】三、点亮一个LED灯(
- 下一篇: shineblink 雨滴感应传感器