需求:下載一張網絡圖,壓縮成固定大小並上傳到本地服務器
工具: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等。