加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java获取资源文件

发布时间:2020-12-14 23:19:10 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 import java.awt.BasicStroke;import java.awt.Color;import java.awt.Graphics2D;import java.awt.Image;import java.awt.Transparency;import java.

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Transparency;
import java.awt.geom.GeneralPath;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLDecoder;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

import javax.swing.ImageIcon;

/**
 * 
 * 功能:读取资源文件类 <br>
 * 时间:2010-11-24 <br>
 * 备注: <br>
 * 
 * @author Lin.~
 * 
 */
public abstract class ResourceUtil {

    /**
     * 得到资源文件
     * 
     * @param path
     *            资源文件的路径
     * @return
     */
    protected final URL getURL(String path) {
        // 先从当前目录取(打成jar包的情况下)
        URL url = getClass().getResource(path);
        // 如果没取到,则从根目录取(打成jar包的情况下)
        if (url == null)
            url = getClass().getResource("/" + path);
        // 从当前线程的地址取
        if (null == url)
            url = Thread.currentThread().getContextClassLoader()
                    .getResource(path);
        // 以上代码都是针对swing的。下面代码针对eclipse中情况
        if (url == null) {
            try {
                String rootPath = System.getProperty("user.dir");
                // 针对在eclipse中,用Java Application运行的。
                File webFile = new File(rootPath + "/" + path);
                if (webFile.exists()) {
                    url = webFile.toURI().toURL();
                } else {
                    // 针对eclipse中用web运行的。
                    webFile = new File(Thread.currentThread().getContextClassLoader()
                            .getResource("/")+"/"+path);
                    url = webFile.toURI().toURL();
                }
                // 实在不行了,死马当活马医吧
                if(null ==url)
                    url = new File(new File("").getAbsoluteFile()+"/"+path).toURI().toURL();
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
        }
        if(null == url)
            throw new NullPointerException("对不起,始终没有找到【"+path+"】资源");
        return url;
    }

    /**
     * 得到资源文件读取流
     * 
     * @param filePath
     *            资源文件路径
     * @return 资源文件流
     * @throws IOException
     */
    private InputStream getJarIO(String filePath) throws IOException {
        String JarPath = URLDecoder.decode(getClass().getProtectionDomain()
                .getCodeSource().getLocation().getFile(),"UTF-8");
        if (JarPath.startsWith("/"))
            JarPath = JarPath.substring(1);
        JarFile cJar = new JarFile(JarPath);
        JarEntry util = cJar.getJarEntry(filePath);
        return cJar.getInputStream(util);
    }

    /**
     * 修改资源文件
     * 
     * @param filePath
     *            资源文件路径
     * @return 资源文件写入流
     * @throws Exception
     */
    protected final OutputStream getJarOut(String filePath) throws IOException {
        throw new IOException("没有实现修改Jar包内部的文件的方法");
    }

    /**
     * 读取资源文件流
     * 
     * @param resourceName
     * @return
     */
    protected final InputStream getIO(String filePath) {
        URL url = getURL(filePath);
        try {
            return url != null ? url.openStream() : getJarIO(filePath);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 得到图片
     * 
     * @param path
     *            图片路江
     * @return
     */
    public ImageIcon getImageIcon(String path) {
        return new ImageIcon(getURL(path));
    }

    /**
     * 缩放图片
     * 
     * @param icon
     *            要缩放的图片
     * @param width
     *            缩放宽度
     * @param height
     *            缩放高度
     * @return 缩放后的图片
     */
    public static ImageIcon zoomImg(ImageIcon icon,int width,int height) {
        Image img = icon.getImage();
        Image newImg = img.getScaledInstance(width,height,1);
        return new ImageIcon(newImg);
    }
     
    /**
     * 绘制圆角图片
     * 
     * @param icon
     *            要绘制的原图
     * @param width
     *            绘制圆角宽
     * @param height
     *            绘制圆角高
     * @return 绘制完成的图片
     */
    public static BufferedImage getCircularImage(ImageIcon icon,int height) {
        BufferedImage buff = new BufferedImage(icon.getIconWidth(),icon.getIconHeight(),Image.SCALE_DEFAULT);

        Image i = icon.getImage();
        Graphics2D g = (Graphics2D) buff.getGraphics();
        buff = g.getDeviceConfiguration().createCompatibleImage(
                icon.getIconWidth(),Transparency.TRANSLUCENT);
        g.dispose();
        g = buff.createGraphics();
        System.out.println(g.getColor());
        g.setColor(Color.RED);
        g.setStroke(new BasicStroke(1));
        RoundRectangle2D rect = new RoundRectangle2D.Double(0,icon.getIconWidth(),width,height);
        GeneralPath p = new GeneralPath();
        p.append(rect,false);
        g.setClip(p);
        g.drawImage(i,null);
        return buff;
    }
     
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读