根据文件扩展名得到文件对应该类型Icon方法

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

根据文件扩展名得到文件对应该类型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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Asp-Net-Core开发笔记:在docker部署时遇到一个小坑

哦吼之前刚说了尝试了使用docker来部署AspNetCore应用(Asp.Net Core部署:早知道,还是docker!以及一点碎碎念),结果这才刚上班就遇到问题了 …我这项目用的数据库是Oracle,之前直接运行没啥问题,…

lasso特征选择python_转:结合Scikit-learn介绍几种常用的特征选择方法-2

4.2 平均精确率减少 Mean decrease accuracy另一种常用的特征选择方法就是直接度量每个特征对模型精确率的影响。主要思路是打乱每个特征的特征值顺序,并且度量顺序变动对模型的精确率的影响。很明显,对于不重要的变量来说,打乱顺序对模型的精…

Mac Generating Pods project Abort trap: 6

为什么80%的码农都做不了架构师?>>> 为项目添加cocoapods如果产生此种错误时,主要有以下几点原因: 1,cocoapods版本过低: 打开终端在终端输入:pod --version,目前最新版本是1.2.0(2017年3月),如果发现版本过低,则可以在终端输入以下命令:gem install co…

svn 服务器搭建

2019独角兽企业重金招聘Python工程师标准>>> Svn搭建 1. Linux 搭建 YUM 服务器 [rootlocalhost conf]# yum install -y subversion 2.验证安装版本: [rootlocalhost conf]# svnserve –version 3.创建SVN 版本库 [rootlocalhost conf]# mkdir /v…

C# 使用 ValueTasks

C# 7 带有更灵活的 await 关键字;它现在可以等待任何提供 GetAwaiter 方法的对象。一种可用于等待的新类型是 ValueTask。与 Task 类相反,ValueTask 是一个结构。这具有性能优势,因为 ValueTask 在堆上没有对象。与异步方法调用相比&#xff…

Electron - 创建跨平台的桌面客户的应用程序

Electron 框架的前身是 Atom Shell,可以让你写使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序。它是基于io.js 和 Chromium 开源项目,并用于在 Atom 编辑器中。Electron 是开源的,由 GitHub 维护,有一个活跃的…

Cognos TM1_10.1.1服务端配置

场景:本文继Cognos TM1_10.1.1服务端安装 之后,简单的说一下本人对简单配置的拙见,确保服务端在安装过程一切正常,成功安装。 1:进入TM的Cognos Configuration 2:如下图,选中环境,这里可以看出…

java黄油刀_一篇文章玩转ButterKnife,让代码更简洁

前言话说,Android开发的兄弟们都知道,每次初始化控件,设置相应的事件,写的那点过程多而且恶心。我们先一块回顾下不堪的曾经~那些年,我们是这样初始化控件:// 每次的习惯上来写一个initView()方法tvContent…

nodejs的内存管理,垃圾回收机制

2019独角兽企业重金招聘Python工程师标准>>> 要点记录: 1、网页js、命令行工具,快进快出的,即时内存泄露,无内存管理必要! 2、服务器端nodejs和其他正规语言一样存在内存泄露。 3、nodejs基于谷歌v8js引擎&#xff…

Redis【第二篇】集群搭建

第一步:准备 1.安装包 ruby-2.4.0.tar.gz rubygems-2.6.10.tgz zlib-1.2.11.tar.gz redis-3.3.2.gem 2. 架构: 名称IP端口节点属性redisA192.168.6.1286379主节点redisB192.168.6.1289379从节点redisC192.168.6.1296379主节点redisD192.168.6.1299379从节…

(转)java中对集合对象list的几种循环访问总结

Java集合的Stack、Queue、Map的遍历在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack、Queue、Map类型的遍历,还是有一些讲究的。最近看了一些代码,在便利Map时…

NET框架下如何使用PaddleOCRSharp

打开VSIDE,新建Windows窗体应用(.NETFramework)类型的项目,选择一个.NET框架,如.NETFramework 4.0,右键点击项目,选择属性》生成,目标平台设置成X64.菜单》工具》选项,Nuget包管理器》程序包管理&#xff0…

Redis主从复制(Master-Slave Replication)

案例测试&#xff1a;1. Master新增网卡&#xff0c;修改server端配置IP : 192.168.40.128/24注释&#xff1a; bind&#xff0c;支持网络连接2. 新建虚机slave&#xff0c;配置网络&#xff0c;修改redis配置#slaveof <masterip> <masterport>slaveof 192.168.40.…

如何对一组 IP 地址 进行排序?

咨询区 Cracker我有一组如下IP地址。192.168.1.5 69.52.220.44 10.152.16.23 192.168.3.10 192.168.1.4 192.168.2.1我在寻找一个方法将他们排序成如下顺序。10.152.16.23 69.52.220.44 192.168.1.4 192.168.1.5 192.168.2.1回答区 Alex Aza对 ip 地址进行排序&#xff0c;大概…

如何为APK签名?

1.用来生成应用签名的文件①默认: debug.keystore > debug签名的应用程序不能在Android Market上架销售&#xff0c;它会强制你使用自己的签名。> 不同电脑使用此文件生成的签名不一样。那就意味着如果你换了机器进行apk版本升级&#xff0c;那么将会出现上面那种程序不能…

基于 Azure 的认知服务将文本合成语音

基于 Azure 的认知服务将文本合成语音Intro前几天发了一个 .NET 20 周年祝福视频&#xff0c;语音是通过 Azure 的认知服务合成的&#xff0c;下面就来介绍一下如何将使用 Azure 的认识服务实现将文本合成为语音Prepare你可以在 Azure Portal 上创建一个免费的语音服务&#xf…

sql查询结果集根据指定条件排序的方法

oracle认为 null 最大。 升序排列&#xff0c;默认情况下&#xff0c;null值排后面。 降序排序&#xff0c;默认情况下&#xff0c;null值排前面。 有几种办法改变这种情况&#xff1a; &#xff08;1&#xff09;用 nvl 函数或decode 函数 将null转换为一特定值 &#xff08;2…

mysql怎么改字体编码_mysql怎么改字符编码?

mysql命令行修改字符编码1、修改数据库字符编码mysql> alter database mydb character set utf8 ;2、创建数据库时&#xff0c;指定数据库的字符编码mysql> create database mydb character set utf8 ;3、查看mysql数据库的字符编码mysql> show variables like charac…

如何编译 dotnet/runtime 源代码

前言最近&#xff0c;准备为 dotnet/runtime 修改 issue&#xff0c;但是在 clone 代码后&#xff0c;发现要编译成功&#xff0c;远没有想象中那么容易。因此&#xff0c;将整个过程进行记录&#xff0c;以供大家参考。以下操作都是在 Windows 10 下完成。0.环境准备详见官方文…

jenkins maven testng selenium自动化持续集成

准备环境 首先我们新建一个maven的工程&#xff0c;并且在pom.xml中配置好我们依赖的一些jar包 <dependencies><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>2.46.0<…