zoukankan      html  css  js  c++  java
  • java web 中 读取windows图标并显示




    java web中读取windows对应文件名的 系统图标 。。。。显示


    1.获取系统图标工具类

    1. package utils; 
    2. import java.awt.Graphics; 
    3. import java.awt.Graphics2D; 
    4. import java.awt.GraphicsConfiguration; 
    5. import java.awt.GraphicsDevice; 
    6. import java.awt.GraphicsEnvironment; 
    7. import java.awt.HeadlessException; 
    8. import java.awt.Image; 
    9. import java.awt.Transparency; 
    10. import java.awt.image.BufferedImage; 
    11. import java.awt.image.ColorModel; 
    12. import java.awt.image.PixelGrabber; 
    13. import java.io.File; 
    14. import java.io.FileNotFoundException; 
    15. import java.io.IOException; 
    16. import javax.swing.Icon; 
    17. import javax.swing.ImageIcon; 
    18. import sun.awt.shell.ShellFolder; 
    19. public class CommonTool {   
    20.     public static BufferedImage getImageByFileTyle(String filename)   
    21.             throws FileNotFoundException {   
    22.         File file = null;   
    23.         String extension = filename.substring(filename.lastIndexOf("."))   
    24.                 .toLowerCase();   
    25.         try {   
    26.             file = File.createTempFile("icon", extension);   
    27.         } catch (IOException e) {   
    28.             // TODO Auto-generated catch block   
    29.             e.printStackTrace();   
    30.         }   
    31.         return toBufferedImage(toImage(toIcon(file)));   
    32.    
    33.     }   
    34.    
    35.     public static Icon toIcon(File file) throws FileNotFoundException {   
    36.         ShellFolder shellFolder = ShellFolder.getShellFolder(file);   
    37.         Icon icon = new ImageIcon(shellFolder.getIcon(true));   
    38.         return icon;   
    39.     }   
    40.    
    41.     public static Image toImage(Icon icon) {   
    42.         if (icon instanceof ImageIcon) {   
    43.             return ((ImageIcon) icon).getImage();   
    44.         } else {   
    45.             int w = icon.getIconWidth();   
    46.             int h = icon.getIconHeight();   
    47.             GraphicsEnvironment ge = GraphicsEnvironment   
    48.                     .getLocalGraphicsEnvironment();   
    49.             GraphicsDevice gd = ge.getDefaultScreenDevice();   
    50.             GraphicsConfiguration gc = gd.getDefaultConfiguration();   
    51.             BufferedImage image = gc.createCompatibleImage(w, h);   
    52.             Graphics2D g = image.createGraphics();   
    53.             icon.paintIcon(null, g, 0, 0);   
    54.             g.dispose();   
    55.             return image;   
    56.         }   
    57.     }   
    58.    
    59.     private static boolean hasAlpha(Image image) {   
    60.         // If buffered image, the color model is readily available   
    61.         if (image instanceof BufferedImage) {   
    62.             BufferedImage bimage = (BufferedImage) image;   
    63.             return bimage.getColorModel().hasAlpha();   
    64.         }   
    65.    
    66.         // Use a pixel grabber to retrieve the image's color model;   
    67.         // grabbing a single pixel is usually sufficient   
    68.         PixelGrabber pg = new PixelGrabber(image, 0, 0, 1, 1, false);   
    69.         try {   
    70.             pg.grabPixels();   
    71.         } catch (InterruptedException e) {   
    72.         }   
    73.    
    74.         // Get the image's color model   
    75.         ColorModel cm = pg.getColorModel();   
    76.         return cm.hasAlpha();   
    77.     }   
    78.    
    79.     // This method returns a buffered image with the contents of an image   
    80.     public static BufferedImage toBufferedImage(Image image) {   
    81.         if (image instanceof BufferedImage) {   
    82.             return (BufferedImage) image;   
    83.         }   
    84.    
    85.         // This code ensures that all the pixels in the image are loaded   
    86.         image = new ImageIcon(image).getImage();   
    87.    
    88.         // Determine if the image has transparent pixels; for this method's   
    89.         // implementation, see Determining If an Image Has Transparent Pixels   
    90.         boolean hasAlpha = hasAlpha(image);   
    91.    
    92.         // Create a buffered image with a format that's compatible with the   
    93.         // screen   
    94.         BufferedImage bimage = null;   
    95.         GraphicsEnvironment ge = GraphicsEnvironment   
    96.                 .getLocalGraphicsEnvironment();   
    97.         try {   
    98.             // Determine the type of transparency of the new buffered image   
    99.             int transparency = Transparency.OPAQUE;   
    100.             if (hasAlpha) {   
    101.                 transparency = Transparency.BITMASK;   
    102.             }   
    103.    
    104.             // Create the buffered image   
    105.             GraphicsDevice gs = ge.getDefaultScreenDevice();   
    106.             GraphicsConfiguration gc = gs.getDefaultConfiguration();   
    107.             bimage = gc.createCompatibleImage(image.getWidth(null), image   
    108.                     .getHeight(null), transparency);   
    109.         } catch (HeadlessException e) {  
    110.             // The system does not have a screen   
    111.         }   
    112.    
    113.         if (bimage == null) {   
    114.             // Create a buffered image using the default color model   
    115.             int type = BufferedImage.TYPE_INT_RGB;   
    116.             if (hasAlpha) {   
    117.                 type = BufferedImage.TYPE_INT_ARGB;   
    118.             }   
    119.             bimage = new BufferedImage(image.getWidth(null), image   
    120.                     .getHeight(null), type);   
    121.         }   
    122.    
    123.         // Copy image to buffered image   
    124.         Graphics g = bimage.createGraphics();   
    125.    
    126.         // Paint the image onto the buffered image   
    127.         g.drawImage(image, 0, 0, null);   
    128.         g.dispose();   
    129.    
    130.         return bimage;   
    131.     }   
    132. }   






    2.调用
    1. <img src="uploaddispalyIcon?dirName=<%=pathdir+"upload/"%>${name}" style="15px;height:15px;"/> 
    2. public void dispalyIcon() {   
    3.         HttpServletResponse response = ServletActionContext.getResponse();   
    4.         response.setContentType("image/png");  
    5.         BufferedImage myImage=null; 
    6.         OutputStream sos =null; 
    7.         try {   
    8.              sos = response.getOutputStream();   
    9.             myImage = CommonTool.getImageByFileTyle(dirName);   
    10.             ImageIO.write(myImage, "png", sos);   
    11.               
    12.         } catch (IOException e) {   
    13.             // TODO Auto-generated catch block   
    14.             e.printStackTrace();   
    15.         }finally{ 
    16.          if(null!=myImage&&null!=sos){ 
    17.            
    18.                 try { 
    19.                  myImage.flush(); 
    20.      sos.flush(); 
    21.       sos.close();  
    22.     } catch (IOException e) { 
    23.      // TODO Auto-generated catch block 
    24.      e.printStackTrace(); 
    25.     }   
    26.                 
    27.          } 
    28.         } 
    29.            
    30.     }  






  • 相关阅读:
    安装并运行Nacos
    为什么浏览器记住密码会影响表单?
    Oracle数据库的函数
    前端axios传递一个包含数组的对象到后台,后台可以用String接收,也可以用List集合接收
    文字链接Link
    DatePicker日期选择器的使用
    前端解决查询慢的问题
    【华为云技术分享】自动驾驶网络系列四:我们谈自动驾驶网络到底在谈什么?
    【华为云技术分享】低代码开发平台发展趋势:低代码——炒作还是趋势?
    【华为云技术分享】【昇腾】ModelArts与Atlas 200 DK云端协同开发——行人检测Demo(提供完整Demo)
  • 原文地址:https://www.cnblogs.com/signheart/p/6595603.html
Copyright © 2011-2022 走看看