search
Home类库下载java类库Java obtains the remote network image file stream, compresses it and saves it locally

java gets the image file stream from the remote network, compresses it and saves it locally

1. Get the image from the remote network

     /**
 * 根据地址获得数据的字节流
 *
 * @param strUrl
 *            网络连接地址
 * @return
 */
public static byte[] getImageFromNetByUrl(String strUrl) {
    try {
        URL url = new URL(strUrl);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setConnectTimeout(5 * 1000);
        InputStream inStream = conn.getInputStream();// 通过输入流获取图片数据
        byte[] btImg = readInputStream(inStream);// 得到图片的二进制数据
        return btImg;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
 /**
 * 根据地址获得数据的字节流
 *
 * @param strUrl
 *            本地连接地址
 * @return
 */
public static byte[] getImageFromLocalByUrl(String strUrl) {
    try {
        File imageFile = new File(strUrl);
        InputStream inStream = new FileInputStream(imageFile);
        byte[] btImg = readInputStream(inStream);// 得到图片的二进制数据
        return btImg;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
   /**
 * 从输入流中获取数据
 *
 * @param inStream
 *            输入流
 * @return
 * @throws Exception
 */
public static byte[] readInputStream(InputStream inStream) throws Exception {
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    byte[] buffer = new byte[10240];
    int len = 0;
    while ((len = inStream.read(buffer)) != -1) {
        outStream.write(buffer, 0, len);
    }
    inStream.close();
    return outStream.toByteArray();
}  

2. Convert the file read from the network into a local file

       byte[] btImg1 = ImageUtil.getImageFromNetByUrl(fileUrl1);
if (null != btImg1 && btImg1.length > 0) {
    logger.debug("读取到:" + btImg1.length + " 字节");
    ImageUtil.writeImageToDisk(btImg1, fileZipUrl1);
} else {
    logger.debug("没有从该连接获得内容");
}
 
byte[] btImg2 = ImageUtil.getImageFromNetByUrl(fileUrl2);
if (null != btImg2 && btImg2.length > 0) {
    logger.debug("读取到:" + btImg2.length + " 字节");
    ImageUtil.writeImageToDisk(btImg2, fileZipUrl2);
} else {
    logger.debug("没有从该连接获得内容");
}
/**
 * 将图片写入到磁盘
 *
 * @param img
 *            图片数据流
 * @param fileName
 *            文件保存时的名称
 */
public static void writeImageToDisk(byte[] img, String zipImageUrl) {
    try {
        File file = new File(zipImageUrl);
        FileOutputStream fops = new FileOutputStream(file);
        fops.write(img);
        fops.flush();
        fops.close();
        System.out.println("图片已经写入"+zipImageUrl);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

3. Compress the local image

import java.io.*; 
import java.util.Date; 
import java.awt.*; 
import java.awt.image.*; 
import javax.imageio.ImageIO; 
import com.sun.image.codec.jpeg.*; 
/**
 * 图片压缩处理
 */ 
public class ImgCompress { 
    private Image img; 
    private int width; 
    private int height;  
    /**
     * 构造函数
     */ 
    public ImgCompress(String fileName) throws IOException { 
        File file = new File(fileName);// 读入文件 
        img = ImageIO.read(file);      // 构造Image对象 
        width = img.getWidth(null);    // 得到源图宽 
        height = img.getHeight(null);  // 得到源图长 
    } 
    /**
     * 按照宽度还是高度进行压缩
     * @param w int 最大宽度
     * @param h int 最大高度
     */ 
    public void resizeFix(int w, int h) throws IOException { 
        if (width / height > w / h) { 
            resizeByWidth(w); 
        } else { 
            resizeByHeight(h); 
        } 
    } 
    /**
     * 以宽度为基准,等比例放缩图片
     * @param w int 新宽度
     */ 
    public void resizeByWidth(int w) throws IOException { 
        int h = (int) (height * w / width); 
        resize(w, h); 
    } 
    /**
     * 以高度为基准,等比例缩放图片
     * @param h int 新高度
     */ 
    public void resizeByHeight(int h) throws IOException { 
        int w = (int) (width * h / height); 
        resize(w, h); 
    } 
    /**
     * 强制压缩/放大图片到固定的大小
     * @param w int 新宽度
     * @param h int 新高度
     */ 
    public void resize(int w, int h) throws IOException { 
        // SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的 优先级比速度高 生成的图片质量比较好 但速度慢 
        BufferedImage image = new BufferedImage(w, h,BufferedImage.TYPE_INT_RGB );  
        image.getGraphics().drawImage(img, 0, 0, w, h, null); // 绘制缩小后的图 
        File destFile = new File("C:/Users/Administrator/Desktop/147.jpg"); 
        FileOutputStream out = new FileOutputStream(destFile); // 输出到文件流 
        // 可以正常实现bmp、png、gif转jpg 
        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 
        encoder.encode(image); // JPEG编码 
        out.close(); 
    }
@SuppressWarnings("deprecation") 
public static void main(String[] args) throws Exception { 
    System.out.println("开始:" + new Date().toLocaleString()); 
    ImgCompress imgCom = new  ImgCompress("C:/Users/Administrator/Desktop/1479209533362.jpg"); 
    imgCom.resizeFix(285, 380); 
    System.out.println("结束:" + new Date().toLocaleString()); 
}
}

End ~

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.