zoukankan      html  css  js  c++  java
  • 图片下载

    图片下载工具类

    package com.zxwa.ntmss.img2text.utils;
    
    import cn.hutool.core.util.StrUtil;
    import com.zxwa.ntmss.process.config.OcrConfig;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    
    public class FileUtils {
        private static Logger LOG = LoggerFactory.getLogger(FileUtils.class);
    
        public static void main(String[] args) throws Exception {
    
        }
    
        public static byte[] netImage2Bytes(String netUrl) {
            LOG.info("开始下载:" + netUrl);
            byte[] bytes = null;
            try {
                URL url = new URL(netUrl);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("GET");
                conn.setConnectTimeout(5 * 1000);
                InputStream inStream = conn.getInputStream();
                bytes = readInputStream(inStream);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return bytes;
        }
    
    
        public static String netImage2File(String netUrl, String fileLocal) throws Exception {
            LOG.info("开始下载:" + netUrl);
            URL url = new URL(netUrl);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(5 * 1000);
            InputStream inStream = conn.getInputStream();
            byte[] data = readInputStream(inStream);
            File imageFile = new File(fileLocal);
            FileOutputStream outStream = new FileOutputStream(imageFile);
            outStream.write(data);
            outStream.close();
            return fileLocal;
        }
    
       public static byte[] readInputStream(InputStream inStream) throws Exception {
            ByteArrayOutputStream outStream = new ByteArrayOutputStream();
            //创建一个Buffer字符串
            byte[] buffer = new byte[1024];
            //每次读取的字符串长度,如果为-1,代表全部读取完毕
            int len = 0;
            //使用一个输入流从buffer里把数据读取出来
            while ((len = inStream.read(buffer)) != -1) {
                //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度
                outStream.write(buffer, 0, len);
            }
            //关闭输入流
            inStream.close();
            //把outStream里的数据写入内存
            return outStream.toByteArray();
        }

        public static byte[] readInputStream(String filePath) throws Exception {
            File file = new File(filePath);
            FileInputStream fis = new FileInputStream(file);
            return readInputStream(fis);
        }
    }

     imgio

    public static BufferedImage read(File input) throws IOException
     
    public static BufferedImage read(InputStream input) throws IOException
     
    public static BufferedImage read(URL input) throws IOException
     
    public static BufferedImage read(ImageInputStream stream) throws IOException

     案例

    /**
         * 网络图片下载
         *
         * @param imageUrl   图片url
         * @param formatName 文件格式名称
         * @param localFile  下载到本地文件
         * @return 下载是否成功
         */
        public static boolean downloadImage(String imageUrl, String formatName, File localFile) {
            boolean isSuccess = false;
            try {
                URL url = new URL(imageUrl);
                isSuccess = ImageIO.write(ImageIO.read(url), formatName, localFile);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return isSuccess;
        }

    实际应用:获取图片的大小和尺寸

    java获取图片的大小和尺寸,有两种获取的源:

    1. 一种是读取本地的图片获取大小和尺寸
    2. 一种是通过服务器上图片的地址获取图片的尺寸
    /**
      * 本地获取
      * */
     @Test
     public void testImg2() throws IOException{
            File picture = new File("C:/Users/aflyun/Pictures/Camera Roll/1.jpg");
            BufferedImage sourceImg =ImageIO.read(new FileInputStream(picture)); 
            System.out.println(String.format("%.1f",picture.length()/1024.0));// 源图大小
            System.out.println(sourceImg.getWidth()); // 源图宽度
            System.out.println(sourceImg.getHeight()); // 源图高度
    
     }
     /**
      * 获取服务器上的
      */
     @Test
     public void getImg() throws FileNotFoundException, IOException{
         URL url = new URL("http://img.mall.tcl.com/dev1/0/000/148/0000148235.fid");
         URLConnection connection = url.openConnection();
         connection.setDoOutput(true);
         BufferedImage image = ImageIO.read(connection.getInputStream());  
         int srcWidth = image .getWidth();      // 源图宽度
         int srcHeight = image .getHeight();    // 源图高度
    
         System.out.println("srcWidth = " + srcWidth);
         System.out.println("srcHeight = " + srcHeight);
     }
    
     /**
      * 获取服务器上的
      */
     @Test
     public void testImg1() throws IOException{
            InputStream murl = new URL("http://img.mall.tcl.com/dev1/0/000/148/0000148235.fid").openStream();
            BufferedImage sourceImg =ImageIO.read(murl);   
            System.out.println(sourceImg.getWidth());   // 源图宽度
            System.out.println(sourceImg.getHeight());   // 源图高度
     }

     

    故乡明
  • 相关阅读:
    模块入门–搜索
    [hadoop源码阅读][2]package结构
    [hadoop源码阅读][8]datanodeDataStorage
    [hadoop源码阅读][4]org.apache.hadoop.io
    [hadoop源码阅读][6]org.apache.hadoop.ipcprotocol和心跳分析
    [hadoop源码阅读][1]源码目录结构
    [hadoop源码阅读][4]org.apache.hadoop.io.compress系列3使用压缩
    [hadoop源码阅读][3]新旧api区别
    [hadoop源码阅读][6]org.apache.hadoop.ipcipc总体结构和RPC
    [hadoop源码阅读][8]datanodeFSDataset
  • 原文地址:https://www.cnblogs.com/luweiweicode/p/14266301.html
Copyright © 2011-2022 走看看