Java壓縮圖片

需求:下載一張網絡圖,壓縮成固定大小並上傳到本地服務器

工具:Thumbnails

步驟:

1、引入Thumbnails依賴:

<!-- 圖片縮略圖 -->
<dependency>
    <groupId>net.coobird</groupId>
    <artifactId>thumbnailator</artifactId>
    <version>0.4.8</version>
</dependency>    

2、核心方法:

// InputStream fis
// File img
Thumbnails.of(fis).size(width,height).toFile(img);

3、demo:

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import org.junit.Test;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Main.class)
public class UtilTest{
    @Test
	public void uploadTest() throws IOException{
        //網絡圖片地址
		String srcUrl = "http://";
		String savePath = "E:/";
		String urlPath = "http://localhosr:11001/";
        // 轉url資源鏈接
		URL url = new URL(srcUrl);
		HttpURLConnection conn = (HttpURLConnection)url.openConnection();
        //設置超時間爲3秒
        conn.setConnectTimeout(3*1000);
        //防止屏蔽程序抓取而返回403錯誤
        conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
        //得到輸入流
        InputStream inputStream = conn.getInputStream();
		String codeUrl = (new UploadUtil()).uploadScaleImg(inputStream, savePath, urlPath, 80, 80);
		System.out.println(codeUrl);
	}
}
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

import net.coobird.thumbnailator.Thumbnails;
public class UploadUtil {
    /**
	 * 上傳壓縮圖片文件
	 * @param fis 圖片輸入流
	 * @param savePath 存放路徑
	 * @param urlPath 訪問路徑
	 * @param width 壓縮文件寬
	 * @param height 壓縮文件高
	 * @author zhangyan
	 * @date 2020年3月30日13:27:02
	 */
	public String uploadScaleImg(InputStream fis, String savePath, String urlPath, int width, int height) throws IOException {
        // 圖片文件命名
		StringBuffer tempFileName = new StringBuffer("qrCode");
		tempFileName.append("-");
		tempFileName.append(FMT.format(new Date()));
		tempFileName.append(UUID.randomUUID().toString().replace("-", "").substring(16));
		tempFileName.append(".png");
        // 指定路徑創建目錄
		File tempPackage = new File(savePath);
		if (!tempPackage.exists()) {
			tempPackage.mkdirs();
		}
        // 創建圖像文件
		File img = new File(savePath + File.separator + tempFileName);
        // 指定寬高壓縮文件
		Thumbnails.of(fis).size(width,height).toFile(img);
        // 返回訪問路徑
		String serverSavePath = urlPath + "/" + tempFileName.toString();
		return serverSavePath;
	}	
}

Thumbnails還支持按比例壓縮、旋轉、加水印、輸出到OutputStream等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章